教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高中教育 >

第6章_Verilog_HDL设计进阶习题

来源:网络收集 时间:2026-09-29
导读: 第6章 Verilog HDL设计进阶习 题 实验与设计 习 题 6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如 何实现? 答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述posedge CLK用于指明 正向跳变,或negedge用于指明负向跳

第6章 Verilog HDL设计进阶习 题 实验与设计

习

题

6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如 何实现? 答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述posedge CLK用于指明 正向跳变,或negedge用于指明负向跳变实现 6-2 哪一种复位方法必须将复位信号放在敏感信号表中?给出这两种电路的Verilog 描述。 答:同步复位、异步复位必须将复位信号放在敏感信号表中。 同步清零: always @(posedge CLK) //CLK上升沿启动 Q<=D; 异步清零: always @(posedge CLK or negedge RST) begin //块开始 //当CLK有升沿时D被锁入Q

if(!RST)Q<=0; //如果RST=0条件成立,Q被清0else if(EN) Q<=D; end //在CLK上升沿处,EN=1,则执行赋值语句 //块结束

习for循环语句module Statistics8(sum,A); output[3:0]sum; input[8:1] A; reg[3:0] sum; integer i; always @(A) begin sum=0; for(i=1;i<=8;i=i+1) //for 语句 if(A[i]) sum=sum+1; else sum=sum; end endmodule

题repeat循环语句module Statistics8(sum,A); parameter S=4; output[3:0]sum; input[7:0] A; reg[3:0] sum; reg[2*S:1]TA; integer i; always @(A) begin TA=A; sum=0; repeat(2*S) begin if(TA[1])sum=sum+1; TA=TA>>1; end end endmodule

6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的 数量。

6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制 数中含1的数量。

while循环语句

module Statistics8(sum,A); parameter S=8; output[3:0]sum; input[7:0] A; reg[S:1] AT; reg[3:0] sum; reg[S:0] CT; always @(A) begin AT={{S{1'b0}},A}; sum=0; CT=S; while(CT>0) begin if(AT[1])sum=sum+1;else sum=sum; begin CT= CT-1; AT=AT>>1; end end end endmodule

习

题

6-4 用循环语句设计一个7人投票表决器。 module voter7(pass,vote); output pass; input[6:0] vote; reg[2:0] sum; integer i; reg pass; always @(vote) begin sum=0; for(i=0;i<=6;i=i+1) //for 语句 if(vote[i]) sum=sum+1; if(sum[2]) pass=1; //若超过4 人赞成,则pass=1 else pass=0; end endmodule

习

题

6-5 Verilog设计一个4位4输入最大数值检测电路。

//Verilog设计一个4位4输入最大数值检测电路 module Maximum_value_detection(Mostlarge,a,b,c,d);//4位 4输入最大数值检测电路 output [3:0] Mostlarge; input [3:0] a,b,c,d; wire[3:0]sum1,sum2,sum3;

assign sum1=(a>b)?a:b;assign sum2=(c>d)?c:d; assign Mostlarge=(sum1>sum2)?sum1:sum2; endmodule

习【例6-9】非阻塞赋初值导致错误module mux4_1(D0,D1,D2,D3,S1,S0,OUT); output OUT ; input D0,D1, D2,D3,S1, SO; reg [2:0] T ; reg OUT; always @(D0, D1,D2,D3, S1,S0) begin T <= 0; if (SO==1) T <= T+1 if (S1==1) T <= T+2 ; case (T) 0 : OUT = D0; 1 : OUT = D1; 2 : OUT = D2 ; 3 : OUT= D3; default : OUT D0; endcase end endmodule

题【例6-10】阻塞赋初值正确module mux4_1(DO,D1, D2,D3,S1, SO, OUT); output OUT ; input DO,D1, D2,D3,S1, SO; reg [2:0] T ; reg

OUT; always @(D0, D1,D2,D3, S1,S0) begin T = 0; if (SO==1) T = T+1 if (S1==1) T = T+2 ; case (T) 0 : OUT = D0; 1 : OUT= D1; 2 : OUT =D2 ; 3 : OUT= D3; default : OUT D0; endcase end endmodule

6-6 从不完整的条件语句产生时序模块的原理看,例6-9和例6-10从表面上看都包含 不完整条件语句,试说明,为什么例6-9的综合结果含锁存器,二例6-10却没有。 答:参见书P137

习

题

6-6 从不完整的条件语句产生时序模块的原理看,例6-9和例6-10从表面上看都包含 不完整条件语句,试说明,为什么例6-9的综合结果含锁存器,二例6-10却没有。 答:参见书P137

事实上,例6-9中,T在过程中出现了3次非阻塞赋值操作,即有3个赋值源对 同一信号T进行赋值--T<=0、T<=T+1和T<=T+2。但根据以上的讨论,对于非阻塞 式赋值,前两个语句中的赋值目标信号T都不可能得到任何数值,只有最后的 T<=T+2语句中的T的值能得到更新。然而,由于赋值符号右边的T始终未得到任何 确定的初始值,即语句T<=0并未完成赋值,所以最后的T始终是个未知值。结果 只能被综合成随S1和S0随机变动的时序电路,导致T成为一个不确定的信号。结 果在过程最后的case语句中,无法通过判断T的值来确定选通输入,即对OUT的赋 值。 例6-10就不一样了。程序首先执行了阻塞式赋值语句T=0,T即刻被更新,从 而使两个if语句中的T都能得到确定的初值。另一方面,当if语句不满足条件时, 即当S0或S1不等于1时,由于T已经在第一条赋值语句中被更新为确定的值0了, 所以尽管两个if语句从表面上看都属于不完整的条件语句,也不可能被综合成时 序电路了。显然也就有了图6-4所示正确的波形输出。

习

题

6-7 设计一个求补码的程序,输入数据是一个有符号的8位二进制数。 //设计一个求补码的程序,输入数据是一个有符号的8位二进制数 module Binary_complement(a,b); //二进制数补码 input [7:0] a; output [7:0] b; integer i; reg [7:0]d; reg [6:0]c; always @(a) begin if(a[7]==1) begin for(i=0;i<7;i=i+1)c[i]=!a[i]; d[7:0]={a[7],(c[6:0]+7'd1)}; end else d[7:0]=a[7:0]; end assign b[7:0]=d[7:0]; endmodule

习//程序1 module BCD_Compare(a,b); output b; input[3:0]a; wire c,d; and(c,a[1],a[2]); and(d,a[0],a[2]); or(b,d,c,a[3]); endmodule

题//程序2 module BCD_Compare(a,b); output b; input [3:0] a; assign b=(a>=5)?1:0; endmodule

6-8 Verilog HDL设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0。

设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于 5时,判别电路输出为1,反之为0。

原理图

习

题

6-9 用原理图或Verilog输入方式分别设计一个周期性产生二进制序列01001011001 的序列发生器,用移位寄存器或用同步时序电路实现,并用时序仿

真器验证其功能。

序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号,能产 生这种信号的逻辑器件就称为序列信号发生器,根据结构不同,它可分为反馈移 位型和计数型两种。

一、计数型序列信号发生器 1.计数型序列信号发生器组成与特点 计数型序列信号发生器能产生多组序列信号,这是移位型发生器所没有的功 能.计数型序列信号发生器是由计数器和组合电路构成的,序列的长度P就是计数 器的模数。 2.计数型序列信号发生器的设计(通过例题来说明) 例1.设计01001011001序列信号发生器 由于序列长度已经知道P=11,所以先用74163N设计一个模11的计数器,再用 八选一数据选择器实现序列输出,把计数器的输出端作为数据选择器的地址变量。 它的电路图为:如图(1)

习CP 1 2 3 4 5 6 QD(A2) QC(D4、~D5) 0 0 0 1 1 1 1 1 1 0 ~0 0 QB(A1) 0 1 1 0 0 1

题QA(A0、D7) 1 0 1 0 D D1 D2 D3 D4 F 0 1 0 0 1 0

6-9 用原理图或Verilog输入方式分别设计一个周期性产生二进 …… 此处隐藏:3694字,全部文档内容请下载后查看。喜欢就下载吧 ……

第6章_Verilog_HDL设计进阶习题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1728675.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)