Verilog HDL数字设计与综合(第二版) 第六章课后习题答案
1.一个全减器具有三个一位输入:x,y和z(前面的借位),两个一位输出D(差)和B(借位)。
计算D和B的逻辑等式如下所示:
D = x’ y’ z’ + x’ y z’ + x y’ z’ + x y z B = x’ y + x’ z + y z
根据上面的定义写出Verilog描述,包括I/O端口(注意:逻辑等式中的+对应于数据流建模中的逻辑或(| |)操作符)。编写激励块,在模块中实例引用全减器。对x,y和z这三个输入的8种组合及其对应的输出进行测试。
x 0 0 0 0 1 1 1 1
y 0 0 1 1 0 0 1 1
z 0 1 0 1 0 1 0 1
B 0 1 1 1 0 0 0 1
D 0 1 1 0 1 0 0 1
答:代码及测试激励如下:(D 应该= x’ y’ z + x’ y z’ + x y’ z’ + x y z) `timescale 1ns/1ns
module full_sub(x,y,z,D,B); input x,y,z; output D,B;
assign D=((!x)&(!y)&(z))||((!x)&y&(!z))||(x&(!y)&(!z))||(x&y&z); assign B=((!x)&y)||((!x)&z)||(y&z);
endmodule
module test61; reg x,y,z; wire D,B;
58
initial begin
x<=0;y<=0;z<=0; #10 x<=0;y<=0;z<=1; #10 x<=0;y<=1;z<=0; #10 x<=0;y<=1;z<=1; #10 x<=1;y<=0;z<=0; #10 x<=1;y<=0;z<=1; #10 x<=1;y<=1;z<=0; #10 x<=1;y<=1;z<=1; #10 $stop; end
Verilog HDL数字设计与综合(第二版)
full_sub fsubtracter(x,y,z,D,B); initial
$monitor($time,"x= %b,y= %b,z= %b,B= %b,D= %b",x,y,z,B,D);
endmodule
最终输出观测结果:
# 0x= 0,y= 0,z= 0,B= 0,D= 0 # 10x= 0,y= 0,z= 1,B= 1,D= 1 # 20x= 0,y= 1,z= 0,B= 1,D= 1 # 30x= 0,y= 1,z= 1,B= 1,D= 0 # 40x= 1,y= 0,z= 0,B= 0,D= 1 # 50x= 1,y= 0,z= 1,B= 0,D= 0 # 60x= 1,y= 1,z= 0,B= 0,D= 0 # 70x= 1,y= 1,z= 1,B= 1,D= 1
第6章 数据流建模
59
2.大小比较器的功能是比较两个数之间的关系:大于、小于或等于。一个四位大小比较器的输
入是两个四位数A和B。我们可以将它们写成下面的形式,最左边的位为最高有效位:
A =A(3) A(2) A(1) A(0) B =B(3) B(2) B(1) B(0)
两个数的比较可以从最高有效位开始,逐位进行。如果两个位不相等,则该位值为0的数为较小的数。为了用逻辑等式实现这个功能,我们需要定义一个中间变量x。注意下面实现的是同或(xnor)的功能。
x (i) = A(i) B (i) + A (i)’ B (i)’
大小比较器的三个输出为:A_gt_B,A_lt_B和A_eq_B。其计算公式为:
A_gt_B = A(3) B(3)’ + x(3) A(2) B(2)’ + x(3) x(2) A(1) B(1)’ + x(3) x(2) x(1) A(0) B(0)’ A_lt_B = A(3)’ B(3) + x(3) A(2)’ B(2) + x(3) x(2) A(1)’ B(1) + x(3) x(2) x(1) A(0)’ B(0) A_eq_B = x (3) x (2) x (1) x (0)
写出模块magnitude_comparator的Verilog描述。写出激励模块并在模块中实例引用magnitude_ comparator模块。选择A和B的几种组合,对模块的功能进行测试。 答:代码以及测试激励: `timescale 1ns/1ns
module magnitude_comparator(A,B,A_gt_B,A_lt_B,A_eq_B); input [3:0] A,B;
output A_gt_B,A_lt_B,A_eq_B; wire x0,x1,x2,x3;
assign x0=((A[0])&(B[0]))||((!A[0])&(!B[0])); assign x1=((A[1])&(B[1]))||((!A[1])&(!B[1])); assign x2=((A[2])&(B[2]))||((!A[2])&(!B[2])); assign x3=((A[3])&(B[3]))||((!A[3])&(!B[3]));
assign A_gt_B =
(A[3]&(!B[3]))||(x3&A[2]&(!B[2]))||(x3&x2&A[1]&(!B[1]))||(x3&x2&x1&A[0]&(!B[0])), A_lt_B =
((!A[3])&B[3])||(x3&(!A[2])&B[2])||(x3&x2&(!A[1])&B[1])||(x3&x2&x1&(!A[0])&B[0]), A_eq_B = x3&x2&x1&x0; endmodule
module test62; reg [3:0] A,B;
wire A_gt_B,A_lt_B,A_eq_B;
60
initial begin
Verilog HDL数字设计与综合(第二版)
A<=0000;B<=0000; #10 A<=0000;B<=1000; #10 A<=1000;B<=0000; #10 $stop; end initial
$monitor($time,"When A=%b and B=%b,the outputs A_gt_B=%b, A_lt_B%b, A_eq_ B=%b; ", A, B, A_gt_B, A_lt_B, A_eq_B);
magnitude_comparator m1(A,B,A_gt_B,A_lt_B,A_eq_B);
endmodule 输出数据:
# 0When A= 0000 and B= 0000,the outputs A_gt_B=0,A_lt_B0,A_eq_B=1; # 10When A= 0000 and B= 1000,the outputs A_gt_B=0,A_lt_B1,A_eq_B=0; # 20When A= 1000 and B= 0000,the outputs A_gt_B=1,A_lt_B0,A_eq_B=0;
3.一个同步计数器可以使用主从JK触发器来设计。设计一个同步计数器,其逻辑图和JK触发
器的逻辑图如图6.5和图6.6所示。清零信号clear低电平有效,输入数据在时钟信号clock的上升沿被锁存,触发器在clock的下降沿输出;当count_enable信号为低电平时停止计数。写出同步计数器的Verilog描述和激励模块,在激励模块中使用clear和count_enable对计数器进行测试,并显示输出计数Q[3:0]。
J
clear
K
clock
图6.5 主从JK触发器
Q[3]
Q[0] Q[1]
CR Q CR Q CR J
Q CR Q clear clock
count-enable
图6.6 四位带清零端和计数使能端的同步计数器
答:
`timescale 1ns/1ns
module master_slave_jk(J,K,clear,clock, q,qbar); input J,K; input clear,clock; output q,qbar; wire a,b,y,ybar,c,d;
assign #1 a=~(qbar&J&clear&clock), b=~(q&clock&K); assign #1 y=~(a&ybar), ybar=~(y&b&clear); assign #1 c=~(y&(~clock)), d=~(ybar&(~clock)); assign #1 q=~(c&qbar), qbar=~(d&q&clear);
endmodule
module counter63(clock,clear,count_enable,Q); input clock,clear; input count_enable; output [3:0] Q;
wire a1,a2,a3;
//module master_slave_jk(J,K,clear,clock,q,qbar);
master_slave_jk jk0(count_enable,count_enable,clear,clock,Q[0],); //and a_1(a1,Q[1],count_enable);
master_slave_jk jk1(a1,a1,clear,clock,Q[1],); //and a_2(a2,Q[2],a1);
master_slave_jk jk2(a2,a2,clear,clock,Q[2],);
//and a_3(a3,Q[3],a2);
master_slave_jk jk3(a3,a3,clear,clock,Q[3],);
assign a1=Q[0]&count_enable; assign a2=Q[1]&a1; assign a3=Q[2]&a2; endmodule
module test63;
reg clock,clear,count_enable; wire [3:0] Q; initial begin
clock<=0;clear<=0;count_enab …… 此处隐藏:2396字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




