veriloghdl数字设计与综合答案

veriloghdl数字设计与综合答案
【篇一:verilog习题选答】
txt>答:fpga中,由程序来转换为可烧录的二进制码。ic设计中,主要是由design-compiler来实现。
2.能否说模块相当于电路图中的功能模块,端口相当于功能模块的
3.assign声明语句,实例元件,always块,这三类描述中哪一种直接与电路结构有关?
4.由连续赋值语句(assign)赋值的变量能否是reg型的?
答:赋值运算分为连续赋值和过程赋值两种。
(1) 连续赋值  连续赋值语句只能对线网型变量进行赋值,而不能对寄存器型变量进行
赋值,基本的语法结构为:assign #(延时量) 线网型变量名 = 赋值表达式; 一个线网型变量一旦被连续赋值语句赋值后,赋值语句右端赋值表达式的值将持续对赋值变量产生连续驱动,只要右端表达式任一操作数的值发生变化,就会立即触发对赋值变量的更新操作。
(2) 过程赋值  过程赋值主要用于两种结构化模块(initial和always)中的赋值语句。
在过程块中只能使用过程赋值语句,不能在过程块中出现连续赋值语句,同时过程赋值语句也只能用在过程赋值模块中。基本的语法结构为:被赋值变量赋值操作符赋值表达式,其中,赋值操作符是“=”或“=”,它分别代表了阻塞赋值和非阻塞赋值类型。过程赋值语句只能对寄存器类型的变量进行赋值,经过赋值后,上面这些变量的值将保持不变,直到另一条赋值语句对变量重新赋值为止。
sysloader 5.如果都不带时间延迟、阻塞和非阻塞赋值有何不同?说明它们的不同点? 答:代码1:
module test(a,b,c,d,y);  //两个与逻辑,1个或逻辑
input a,b,c,d;
omap4460 output y;
reg y,tmp1,tmp2;
always @(a or b or c or d)// y的值并不等于当前的tmp1,tmp2相或的值,而是等于上  b
egin一次运算时tmp1,tmp2相或的值。相当于一个延迟,在第2 tmp1 = ab;  次always模块运行完后得到想要的y值
tmp2 = cd;
y = tmp1|tmp2;
智慧农业控制系统
endendmodule
大型屋面板代码2: 基本与代码1一样,只是在always的敏感列表中加入了temp1,temp2
module test(a,b,c,d,y);
input a,b,c,d;
output y;
reg y,tmp1,tmp2;
always @(a or b or c or d or tmp1 or tmp2)//与代码一不同,
begin
tmp1 = ab;
tmp2 = cd;
y = tmp1|tmp2;
end
endmodule
代码3:在代码2中加进参数j,来帮助判断always模块的运行次数:
module test(a,b,c,d,y);
input a,b,c,d;
output y;
reg y,tmp1,tmp2;
reg [8:0]j=0;
always @(a or b or c or d or tmp1 or tmp2)
begin
j = j + 1;
#5 //这里加了一个延时,方便分析
tmp1 = ab;
延迟消失了。
tmp2 = cd;
y = tmp1|tmp2;
end
endmodule
首先j从0增至1,为阻塞赋值,然后延迟5,开始下面的非阻塞赋值,然后temp1,temp2得到了新的值,但是y还是并没有更新,而是和代码一中一样保持。第一次always执行完毕。由于temp1的值得到了更新,随即再次运行always模块,j从1增加到2,然后延迟5,而此时a,b,c,d的值没有变,因此temp1,temp2没有变化,但是y却得到了第一次temp1,temp2变化后相或的值,发生跳变。
siro2246 由上可以看出,本来只要1次就能完成的组合逻辑,由于采用了非阻塞赋值,仿真器不得不两次进入always模块,因此可以遵循这样的原则,写组合逻辑的时候,always中要用阻塞赋值,写时序逻辑的时候,always模块中要用非阻塞赋值。(当然不排除为了特殊的目的不遵循这个建议)
6.defparam命令的使用,模块实例化和模块引用
在一个模块中改变另一个模块的参数时,需要使用defparam命令,高层模块可以改变低层模块用parameter定义的值,改变低层模块的参数值有以下方式:
(1) defparam 层次路径 = 改变后的值 (见书本32页)
(2) 实例化时传递参数模块名 #(改变后参数的值) 实例名 (输入输出) 可以利用defparam命令定义参数,语法结构为:
模块名 例化模块名 (输入输出);
defparam 例化模块名. 参数名=value;
模块实例引用时参数的传递还可以利用特殊符号“#”,语法结构为:
模块名 # (改变后的参数值)例化模块名 (输入输出端口)
7.同步清零d触发器和异步清零d触发器
module  dff_tongbu (q,d,clk,clr);//同步清零受时钟控制
input d,clk,clr;
output q;
reg q;
always @(negedge clock)
物理除垢
if (clr) q=0;
else q=d;
endmodule
  module dff_yibu(q,d,clk,clr);//异步清零不受时钟控制
input d,clk,clr;
output q;
reg q;
always @(clr)
if (clr) q=0;else q=d;
使用同步清零d触发器输出一个周期为10个时间单位的时钟信号:
  8. 敏感变量的描述完备性
verilog中,用always模块设计组合逻辑电路时,在赋值表达式右端参与赋值的所有信号都必须在always@敏感列表中列出。如果在赋值表达式右端引用了敏感列表中没有列出的信号,在综合时会为没有列出的信号隐含地产生一个透明锁存器,这是因为该信号的变化不会立即引起所赋值的变化,而必须要等到敏感列表中的某个信号发生变化时,它的作用才表现出来,相当于存在一个透明锁存器,把该信号的变化暂存起来。
【篇二:fpga习题集及参考答案】
一、 填空题
1. 一般把eda技术的发展分为()个阶段。
2. fpga/cpld有如下设计步骤:①原理图/hdl文本输入、②适配、③功能仿真、④综合、
⑤编程下载、⑥硬件测试,正确的设计顺序是①()⑤⑥。
3. 在eda工具中,能完成在目标系统器件上布局布线的软件称为()。
4. 设计输入完成之后,应立即对文件进行()。
5. 基于硬件描述语言的数字系统设计目前最常用的设计方法称为()设计法。
6. 将硬件描述语言转化为硬件电路的过程称为()。
7. ip核在eda技术和开发中具有十分重要的地位,以hdl方式提供的ip被称为()
ip。
8. soc系统又称为()系统。sopc系统又称为()系统。
9. 将硬核和固核作为()ip核,而软核作为()ip核。
10. ip核在eda技术和开发中具有十分重要的地位,以hdl方式提供的ip被称为()。
11. hdl综合器就是逻辑综合的过程,把可综合的vhdl/verilog hdl转化成硬件电路时,
包含了三个过程,分别是()、()、()。
12. eda软件工具大致可以由五个模块构成,分别是设计输入编辑器、()、()、
()和()。
13. 按仿真电路描述级别的不同,hdl仿真器分为()仿真、()仿真、()
仿真和门级仿真。
14. 系统仿真分为()、()和()。
15. ()仿真是对设计输入的规范检测,这种仿真通过只能表示编译通过,说明设计
满足一定的语法规范,但不能保证设计功能满足期望。
16. ()仿真是对综合后的网表进行的仿真,它验证设计模块的基本逻辑功能,但不
带有布局布线后产生的时序信息,是理想情况下的验证。
17. ()仿真是布局布线后进行的后仿真,仿真时考虑了布线延时,和芯片实际的工
作情况更加接近。
18. 目前xilinx公司生产的fpga主要采用了()配置存储器结构。
19. 描述测试信号的变化和测试工程的模块叫做()。

本文发布于:2024-09-25 04:30:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/278081.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:赋值   模块   设计   过程   语句   变量   信号
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议