VerilogHDL设计初步习题.ppt

VerilogHDL设计初步习题.ppt

ID:51504619

大小:650.55 KB

页数:27页

时间:2020-03-25

VerilogHDL设计初步习题.ppt_第1页
VerilogHDL设计初步习题.ppt_第2页
VerilogHDL设计初步习题.ppt_第3页
VerilogHDL设计初步习题.ppt_第4页
VerilogHDL设计初步习题.ppt_第5页
资源描述:

《VerilogHDL设计初步习题.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章VerilogHDL设计初步习题4-1举例说明,VerilogHDL的操作符中,哪些操作符的运算结果总是一位的。答:书上74.75.80.92页4-2wire型变量与reg型变量有什么本质区别,它们可用于什么类型语句中?答:书上P261~262《9.2VerilogHDL数据类型》reg主要是用于定义特定类型的变量,即寄存器型(Register)变量(或称寄存器型数据类的变量)。如果没有在模块中显式地定义信号为网线型变量,Verilog综合器都会将其默认定义为wire型。过程语句always@引导的顺序语句中规定必须是reg型变量。wire型变量不允许

2、有多个驱动源习题4-3阻塞赋值和非阻塞赋值有何区别?答:Verilog中,用普通等号“=”作为阻塞式赋值语句的赋值符号,如y=b。Verilog中,用普通等号“<=”作为非阻塞式赋值语句的赋值符号,如y<=b。阻塞式赋值的特点是,一旦执行完当前的赋值语句,赋值目标变量y即刻获得来自等号右侧表达式的计算值。如果在一个块语句中含有多条阻塞式赋值语句,则当执行到其中某条赋值语句时,其他语句将禁止执行,即如同被阻塞了一样。非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作。非阻塞的含义可以理解为在执行当前语句时,对于块中的其他语句的执行情况一律不加限制,不

3、加阻塞。这也可以理解为,在begin_end块中的所有赋值语句都可以并行运行。4-4举例说明,为什么使用条件叙述不完整的条件句能导致产生时序模块的综合结果?答:●当CLK发生了电平变化,但是从1变到0。这时无论D是否变化,都将启动过程去执行if语句;但此时CLK=0,无法执行if语句,从而无法执行赋值语句Q<=D,于是Q只能保持原值不变(这就意味着需要在设计模块中引入存储元件)。●当CLK没有发生任何变化,且CLK一直为0,而敏感信号D发生了变化。这时也能启动过程,但由于CLK=0,无法执行if语句,从而也就无法执行赋值语句Q<=D,导致Q只能保持原值(这也

4、意味着需要在设计模块中引入存储元件)。在以上两种情况中,由于if语句不满足条件,于是将跳过赋值表达式Q<=D,不执行此赋值表达式而结束if语句和过程.对于这种语言现象,Velilog综合器解释为,对于不满足条件,跳过赋值语句Q<=D不予执行,即意味着保持Q的原值不变(保持前一次满足if条件时Q被更新的值)。对于数字电路来说,当输入改变后试图保持一个值不变,就意味着使用具有存储功能的元件,就是必须引进时序元件来保存Q中的原值,直到满足if语句的判断条件后才能更新Q中的值,于是便产生了时序元件。moduleLATCH1(CLK,D,Q);outputQ;inpu

5、tCLK,D;regQ;always@(DorCLK)if(CLK)Q<=D;//当CLK=1时D被锁入Qendmodule4-5用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比较这两种方式。4-5用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比较这两种方式。moduledecoder3_8(G1,Y,G2,A,G3);inputG1,G2,G3;wireG1,G2,G3;input[2:0]A;wire[2:0]A;output[7:0]Y;reg[7:0]Y;regs;always@

6、(A,G1,G2,G3)begins<=G2

7、G3;if(G1==0)Y<=8'b1111_1111;elseif(s)Y<=8'b1111_1111;elsecase(A)3'b000:Y=8'b11111110;3'b001:Y=8'b11111101;3'b010:Y=8'b11111011;3'b011:Y=8'b11110111;3'b100:Y=8'b11101111;3'b101:Y=8'b11011111;3'b110:Y=8'b10111111;3'b111:Y=8'b01111111;default:Y=8'bxxxxxxxx;endca

8、seendendmodule4-5用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比较这两种方式。moduledecoder3_8(G1,Y,G2,A,G3);inputG1,G2,G3;wireG1,G2,G3;input[2:0]A;wire[2:0]A;output[7:0]Y;reg[7:0]Y;regs;always@(A,G1,G2,G3)begins<=G2

9、G3;if(G1==0)Y<=8'b1111_1111;elseif(s)Y<=8'b1111_1111;elsebeginif(A==3'b000)Y=

10、8'b11111110;elseif(A==3'b0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。