当前位置:网站首页>verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
2022-08-02 14:02:00 【驚蟄_】
《Verilog数字系统设计教程》夏宇闻 第三版思考题
答案合集 : Verilog学习系列 第三部分
1.举例说明状态分配对状态机电路的复杂度和速度的影响。
例12.2与12.1的状态分配不同,例12.2采用独热编码而例12.1则采用Gray编码,究竟采用哪一种编码好看看1具体情况而定。对于用FBGA实现的有限状态机建议采用独热码,因为虽然独热编码多用了两个触发器,但所用组合电路可省些,因而使用电路的速度和可靠性有显著提高,而总的单元数并无显著增加.采用独热编码后有了多余的状态,就有一些不可到达的状态,为此可以用默认项表示不可达到的状态。
2.分别说明和解释[例12.1]~[例12.4]中两种不同赋值(即非阻塞赋值“≤=”和阻塞赋值“=”)的用法,和逻辑关系等号“==”的含义。
例12.1用“<=”赋值,表示在过程块结束以后才进行赋值是并行结构。例12.4用“=”赋值,表示是立即进行赋值是顺序结构。两个例子中作用是一样的,例12.4用了多个always块,而例12.1只用到了一个 always 块,故两种赋值的方式才会不一样。逻辑关系符号“m”是表示判断的符号,用到判断信号是否为符合条件的信号,如 if(a2’b10)则表示a是否为2’b10。
3.一般情况下状态机中的状态变量是用来干什么的?是否可以把状态变量中的某些位指定为状态机的输出,直接用来控制逻辑开关?这样做有什么好处?有什么缺点?
用来表示状态机的几种状态,可以用来对不同状态进行转换,可以直接把状态变量中的某位指定为状态机的输出,直接用来控制逻辑开关。这样做可以提高输出信号的开关速度并节省电路器件。但这种方法的缺点就是开关的维持时间必须与状态机的时间一致。
4.分析[例12.1]~[例12.4]中用Verilog编写的状态机模块。经综合后产生的电路结构中,哪个属于Mealy状态机?哪个属于Moore状态机?请在认真分析及综合出来的电路结构后,给出正确的答案。
从综合后产生的电路结构,可知例12.1,例12.2都属于 Mealy 状态机而例12.3,例12.4属于Moore状态机
5.如果需要设计带流水线输出的 Mealy状态机﹐其 Verilog模块应该如何编写?请您编写一下,并通过综合器产生电路结构,分析其电路结构和时序。
Verilog 模块:
module fsm(clock, reset, a, k2, k1);
input clock, reset, a;
output k1, k2;
reg k1, k2;
reg[3:0] state;
parameter idle = 4'b1000,
start = 4'b0100,
stop = 4'b0010,
clear = 4'b0001,
[email protected](posedge clock)
if(!reset)
begin
state<=idle;
k2<=0;
k1<=0;
end
else
case(state)
idle:
if(a)
begin
state<=start;
k1<=0;
end
else
begin
state<=idle;
k2<=0;
k1<=0;
end
else
begin
state<=idle;
k2<=0;
k1<=0;
end
start:
if(!a) state<=stop;
else state<=start;
stop:
if(a)
begin
state<=clear;
k2<=1;
end
else
begin
state<=stop;
k2<=0;
k1<=0;
end
clear:
if(a)
begin
state<=idle;
k2<=0;
k1<=1;
end
else
begin
state<=clear;
k2<=0;
k1<=0;
end
default:
state<=idle;
endcase
endmodule
电路结构:
电路结构有数据选择器构成,输出通过寄存器输出,可构成流水线。通过仿真其时序如上图所示,各状态的转换如图,可知符合要求。
6.在状态机的测试模块中,最后面的 initial块语句有什么作用,若测试模块中没有最后的initial语句块能不能进行仿真?如果能,需要注意什么?本测试模块还有什么地方没有测试到?应该如何改进?
和其它模块一起有并行的作用,起到是仿真结束的作用。若测试模块中没有最后的 initial语句能进行仿真。需要注意仿真是各个信号要对应所测试的模块。本测试模块没有测试到当状态不属于四个状态时,将会怎样。在初始化时可以先将reset信号为高阻或xx而后再按照该测试模块进行仿真。
边栏推荐
- Audio processing: floating point data stream to PCM file
- EasyExcel 的使用
- 第十五单元 分页、过滤
- 第十一单元 序列化器
- Unit 12 associated serialization
- Flask项目的完整创建 七牛云与容联云
- The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
- What is the difference between web testing and app testing?
- chapter7
- ping命令的使用及代码_通过命令查看ping路径
猜你喜欢
理解TCP长连接(Keepalive)
ZABBIX配置邮件报警和微信报警
paddleocr window10初体验
8581 Linear linked list inversion
STM32(F407)—— 堆栈
Unit 13 Mixing in View Base Classes
The world's largest Apache open source foundation is how it works?
Unit 11 Serializers
How to solve mysql service cannot start 1069
使用云GPU+pycharm训练模型实现后台跑程序、自动保存训练结果、服务器自动关机
随机推荐
MarkDown语法汇总
[ROS] (06) ROS Communication - Topic Communication
WeChat Mini Program-Recent Dynamic Scrolling Implementation
动态刷新日志级别
Unit 4 Routing Layer
Flask-SQLAlchemy
第十一单元 序列化器
Linux:CentOS 7 安装MySQL5.7
Tornado框架路由系统介绍及(IOloop.current().start())启动源码分析
The future of financial services will never stop, and the bull market will continue 2021-05-28
【Tensorflow】AttributeError: module 'keras.backend' has no attribute 'tf'
海明校验码纠错设计原理
深度学习框架pytorch快速开发与实战chapter4
ftp常用命令详解_iftop命令详解
Deep learning framework pytorch rapid development and actual combat chapter3
[ROS](05)ROS通信 —— 节点,Nodes & Master
rpm包的卸载与安装[通俗易懂]
Audio processing: floating point data stream to PCM file
replay视频播放器_怎么让手机音乐跟视频一起放
php开源的客服系统_在线客服源码php