第6章 Verilog HDL设计进阶习题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
1CLK7476N 1K ~1Q ~1CLR 14
U3A 7400N
3
V1 100 Hz 5V J1
10 9 2 7 6 5 4 3
74194N
9 QD QC QB QA 12 13 14 15 11 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 G D C B A
//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;

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 1 0 D D1 D2 D3 D4 D5 D6 F 0 1 0 0 1 0
7
8 9 10 11
1
1 1 1 1
U1
74150N
Key = Space
XSC1
Ext Trig + _ A + _ + B _
U5A 7404N
E15 E14 E13 E12 E11 E10 E9 E8 E7 E6 E5 E4 E3 E2 E1 E0
0
1 ~1 1 1
1
0 0 1 1
1
0 1 0 1
D7
D4 D5 D6 D7
1
1 0 0 1
VDD 5V U2 U1A 74S04D
15 11 12 13 14
7 9 10 11 ~G C B A D7 D6 D5 D4 D3 D2 D1 D0
XSC1
Ext T rig + _ A + _ + B _

F 1
序列
4 9
2 5 11 6 12
1
2
1
0
0
0
0
1
1
0
0
1
3
4
0
1
1
0
0
1
1
1
1/0
0
5
6
0
1
1
1
1
0
0
0
0
1
7
1
0
1

10
0


74194N
01001011001
VDD 5V U4
11 1 CLK ~CLR S1 S0 SR SL D C B A 4 1 16 1J
2 ~1PR 1Q
U2A
U1B 74S04D
U4
~CLR ~LOAD CLK
12 13 14 15 1 2 3 4
74151N
~W Y
6 5
RCO ENT ENP 10 7 2 1 9
74163N
D C B A 6 5 4 3
V1 100 Hz 5V
QD QC QB QA


如图(1)

CP 0 QD 0 QC 1 QB 0 QA 0
assign sum1=(a>b)?a:b;
assign sum2=(c>d)?c:d; assign Mostlarge=(sum1>sum2)?sum1:sum2; endmodule


6-6 从不完整的条件语句产生时序模块的原理看,例6-9和例6-10从表面上看都包含 不完整条件语句,试说明,为什么例6-9的综合结果含锁存器,二例6-10却没有。 答:参见书P137
6-8 Verilog HDL设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0。
设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于 5时,判别电路输出为1,反之为0。
原理图


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

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

6-4

用循环语句设计一个7人投票表决器。


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


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章 Verilog HDL设计进阶
习 题 实验与设计


6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如 何实现? 答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述posedge CLK用于指明 正向跳变,或negedge用于指明负向跳变实现

for循环语句



//程序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
相关文档
最新文档