EDA技术与Verilog_HDL(潘松)第四章与第六章课后习题答案.ppt
《EDA技术与Verilog_HDL(潘松)第四章与第六章课后习题答案.ppt》由会员分享,可在线阅读,更多相关《EDA技术与Verilog_HDL(潘松)第四章与第六章课后习题答案.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、EDAEDA技术与技术与Verilog_HDL(Verilog_HDL(潘潘松松) )第四章与第六章课后习题第四章与第六章课后习题答案答案 Four short words sum up what has lifted most successful Four short words sum up what has lifted most successful individuals above the crowd: a little bit more. individuals above the crowd: a little bit more. -author -author -date-
2、date习习 题题 4-1 举例说明,举例说明,Verilog HDL的操作符中,哪些操作符的运算结果总是一位的。的操作符中,哪些操作符的运算结果总是一位的。答:答: P74/74/80/924-2 wire型变量与型变量与reg型变量有什么本质区别,它们可用于什么类型语句中?型变量有什么本质区别,它们可用于什么类型语句中?答:书上答:书上P2612629.2 Verilog HDL数据类型数据类型reg主要是用于定义特定类型的变量,即寄存器型主要是用于定义特定类型的变量,即寄存器型(Register)变量变量(或称寄存器型数据类的或称寄存器型数据类的变量变量)。如果没有在模块中显式地定义信号
3、为网线型变量,。如果没有在模块中显式地定义信号为网线型变量,Verilog综合器都会将其默认定综合器都会将其默认定义为义为wire型。过程语句型。过程语句always引导的顺序语句中规定必须是引导的顺序语句中规定必须是reg型变量。型变量。wire型变量不允许有多个驱动源型变量不允许有多个驱动源 习习 题题 4-3 4-3 阻塞赋值和非阻塞赋值有何区别?阻塞赋值和非阻塞赋值有何区别?答:答:VerilogVerilog中,用普通等号中,用普通等号“=”=”作为阻塞式赋值语句的赋值符号,如作为阻塞式赋值语句的赋值符号,如y=by=b。 VerilogVerilog中,用普通等号中,用普通等号“=
4、”=”作为非阻塞式赋值语句的赋值符号,如作为非阻塞式赋值语句的赋值符号,如y=by=b。 阻塞式赋值的特点是,一旦执行完当前的赋值语句,赋值目标变量阻塞式赋值的特点是,一旦执行完当前的赋值语句,赋值目标变量y y即刻即刻获得来自等号右侧表达式的计算值。如果在一个块语句中含有多条阻塞式赋值获得来自等号右侧表达式的计算值。如果在一个块语句中含有多条阻塞式赋值语句,则当执行到其中某条赋值语句时,其他语句将禁止执行,即如同被阻塞语句,则当执行到其中某条赋值语句时,其他语句将禁止执行,即如同被阻塞了一样。了一样。 非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作。非非阻塞式赋值的特点是必须在
5、块语句执行结束时才整体完成赋值操作。非阻塞的含义可以理解为在执行当前语句时,对于块中的其他语句的执行情况一阻塞的含义可以理解为在执行当前语句时,对于块中的其他语句的执行情况一律不加限制,不加阻塞。这也可以理解为,在律不加限制,不加阻塞。这也可以理解为,在begin_endbegin_end块中的所有赋值语句都块中的所有赋值语句都可以并行运行。可以并行运行。 4-4 举例说明,为什么使用条件叙述不完整的条件句能导致产生时序模块的综合结果?举例说明,为什么使用条件叙述不完整的条件句能导致产生时序模块的综合结果?答:答: 当CLK发生了电平变化,但是从1变到0。这时无论D是否变化,都将启动过程去执行
6、if语句;但此时CLK=0,无法执行if语句,从而无法执行赋值语句Q=D,于是Q只能保持原值不变(这就意味着需要在设计模块中引入存储元件)。 当CLK没有发生任何变化,且CLK一直为0,而敏感信号D发生了变化。这时也能启动过程,但由于CLK=0,无法执行if语句,从而也就无法执行赋值语句Q=D,导致Q只能保持原值(这也意味着需要在设计模块中引入存储元件)。 在以上两种情况中,由于if语句不满足条件,于是将跳过赋值表达式Q=D,不执行此赋值表达式而结束if语句和过程对于这种语言现象,Velilog综合器解释为,对于不满足条件,跳过赋值语句Q=D不予执行,即意味着保持Q的原值不变(保持前一次满足i
7、f条件时Q被更新的值)。对于数字电路来说,当输入改变后试图保持一个值不变,就意味着使用具有存储功能的元件,就是必须引进时序元件来保存Q中的原值,直到满足if语句的判断条件后才能更新Q中的值,于是便产生了时序元件。 module LATCH1 (CLK, D, Q); output Q; input CLK, D; reg Q; always (D or CLK) if(CLK)Q=D; /当CLK=1时D被锁入Qendmodule 4-5 用用Verilog设计一个设计一个3-8译码器,要求分别用译码器,要求分别用case语句和语句和if_else语句。比语句。比较这两种方式。较这两种方式。
8、4-5 用用Verilog设计一个设计一个3-8译码器,要求分别用译码器,要求分别用case语句和语句和if_else语句。比较这两种语句。比较这两种方式。方式。module decoder3_8 ( G1 ,Y ,G2 ,A ,G3 );input G1, G2, G3;wire G1, G2, G3;input 2:0 A ;wire 2:0 A ;output 7:0 Y ;reg 7:0 Y ;reg s;always ( A ,G1, G2, G3) begin s = G2 | G3 ; if (G1 = 0) Y = 8b1111_1111; else if (s) Y = 8b
9、1111_1111; else case ( A ) 3b000: Y = 8b11111110; 3b001: Y = 8b11111101; 3b010: Y = 8b11111011; 3b011: Y = 8b11110111; 3b100: Y = 8b11101111; 3b101: Y = 8b11011111; 3b110: Y = 8b10111111; 3b111: Y = 8b01111111; default:Y = 8bxxxxxxxx; endcase end endmodule 4-5 用用Verilog设计一个设计一个3-8译码器,要求分别用译码器,要求分别用c
10、ase语句和语句和if_else语句。比较这两种语句。比较这两种方式。方式。module decoder3_8 ( G1 ,Y ,G2 ,A ,G3 ); input G1, G2, G3; wire G1, G2, G3; input 2:0 A ; wire 2:0 A ; output 7:0 Y ; reg 7:0 Y ; reg s; always ( A ,G1, G2, G3) begin s = G2 | G3 ; if (G1 = 0) Y = 8b1111_1111; else if (s) Y = 8b1111_1111; else begin if (A=3b000)Y
11、=8b11111110; else if (A=3b001)Y=8b11111101; else if (A=3b010)Y=8b11111011; else if (A=3b011)Y=8b11110111; else if (A=3b100)Y=8b11101111; else if (A=3b101)Y=8b11011111; else if (A=3b110)Y=8b10111111; else if (A=3b111)Y=8b01111111; else Y=8bxxxxxxxx;end endendmodule/测试文件,测试文件,?部分请根据被测试的文件修改部分请根据被测试的文件
12、修改module stimulus; reg 2:0A ; wire7:0Y ; reg G1 ,G2 ,G3; decoder3_8 DUT ( G1 ,Y ,G2 ,A ,G3 ); initial begin $monitor($time,A=%d,G1=%b,G2=%b, G3=%b,Y= %dn,A, G1, G2, G3, Y); endinitial begin G1=1 ;G2=1 ;G3=1;A=0; #10 G2=0;G1=0; #10 G2=0;G1=1;#10 G2=1;G1=0;G3=0; #10 G1=0;G1=1;G3=1; #10 G1=0;G1=0;G3=0;
13、 #10 G1=1;G2=0;G3=0; #50 A= 0; #50 A= 1; #50 A= 2; #50 A= 3; #50 A= 4; #50 A= 5; #50 A= 6; #50 A= 7; #50 $finish; endendmodule习习 题题 4-6图图4-26所示的是双所示的是双2选选1多路选择器构成的电路多路选择器构成的电路MUXK。对于其中。对于其中MUX21A,当,当s=0和和s=1时,分别有时,分别有y=a和和y=b。试在一个模块结构中用两个过程来表达此电路。试在一个模块结构中用两个过程来表达此电路。答:参考实验答:参考实验1图图4-26 含含2选选1多路选择器的
14、模块多路选择器的模块module MUXK (a1, a2, a3, s0, s1, outy); input a1, a2, a3, s0, s1; output outy; wire outy; wire tmp; mux21a u1 (.a(a2),.b(a3),.s(s0),.y(tmp); mux21a u2 (.a (a1),.b (tmp),.s(s1),.y(outy);endmodule习习 题题 4-7 4-7 给出给出1 1位全减器的位全减器的VHDLVHDL描述。要求:描述。要求:(1 1)首先设计)首先设计1 1位半减器,然后用例化语句将它们连接起来,图位半减器,然后
15、用例化语句将它们连接起来,图4-284-28中中h_suberh_suber是半减器,是半减器,diffdiff是输出差,是输出差,s_outs_out是借位输出,是借位输出,sub_insub_in是借位输入。是借位输入。(2 2)根据图)根据图4-274-27设计设计1 1位全减器。位全减器。(3 3)以)以1 1位全减器为基本硬件,构成串行借位的位全减器为基本硬件,构成串行借位的8 8位减法器,要求用例化语句来位减法器,要求用例化语句来完成此项设计。完成此项设计。 图图4-27 1位全减器位全减器x xy ydiffdiffs_outs_out0000011110101100/一个二进制
16、半减器半减器设计进行了阐述module h_suber(x,y,diff,s_out);input x,y;outputdiff, s_out;assign diff=xy;assign s_out=(x)&y;endmodule module f_suber(x,y,sub_in,diffr,sub_out);/一个二进制全减器全减器顶层设计进行了阐述 output diffr,sub_out; input x,y,sub_in; wire e,d,f; h_suber u1(x,y,e,d);/ h_suber u2(.x(e),.diff(diffr),.y(sub_in),.s_out
17、(f);/ or2a u3(.a(d),.b(f),.c(sub_out); endmodule xysub_indiffr sub_out0000000111010110110110010101001100011111x x为被减数,为被减数,y y为减数,为减数, sub_insub_in为为低位的借低位的借位,位, diffdiffr r为差,为差,susub_outb_out为向为向高位的借高位的借位。位。习习 题题 习习 题题4-8 给出一个给出一个4选选1多路选择器的多路选择器的Verilog描述。此器件与图描述。此器件与图4-1类似,但选通控制端有类似,但选通控制端有4个输入:个
18、输入:S0、S1、S2、S3。当且仅当。当且仅当S0=0时:时:Y=A;S1=0时:时:Y=B;S2=0时:时:Y=C;S3=0时:时:Y=D。module MUX41a (A,B,C,D,S0,S1,S2,S3,Y); output Y; /定义定义Y为输出信号为输出信号 input A, B, C, D; input S0,S1,S2,S3; reg Y; /定义输出端口信号定义输出端口信号Y为寄存器型变量为寄存器型变量 always (A,B,C,S0,S1,S2,S3 )begin /块语句起始块语句起始 if (S0=0)Y=A; /当当S0 =0成立,即成立,即(S0 =0)=1时
19、,时,Y=A; else if (S1=0)Y=B; /当当(S1 =1)为真,则为真,则Y=B; else if (S2=0)Y=C; /当当(S2 =2)为真,则为真,则Y=C; else if (S3=0) Y=D; /当当(S3 =3)为真,即为真,即Y=D; end /块语句结束块语句结束endmodule4-9 把例把例4-21改成一异步清改成一异步清0,同步时钟使能和异步数据加载型,同步时钟使能和异步数据加载型8位二进制加位二进制加法计数器。法计数器。【例4-21】含有异步清0同步时钟使能和同步数据加载功能的十进制计数器module CNT10(CLK, RST, EN,LOAD
20、,COUT,DOUT,DATA);input CLK, RST, EN,LOAD; /时钟,时钟使能,复位,数据加载控制信号输入口input 3:0DATA; /4位并行加载数据输入口output 3:0 DOUT; /计数数据输出信号口output COUT; /计数进位输出reg COUT; reg3:0 Q1;assign DOUT=Q1; /将内部寄存器的计数结果输出至DOUTalways (posedge CLK or negedge RST ) /时序过程 beginif(!RST)Q1=0; /RST=0时,对内部寄存器单元异步清0 /当LOAD=0,异步向内部寄存器加载数据 /
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 Verilog_HDL 潘松 第四 第六 课后 习题 答案
限制150内