verilog实验报告---程超_第1页
verilog实验报告---程超_第2页
verilog实验报告---程超_第3页
verilog实验报告---程超_第4页
verilog实验报告---程超_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上西 安 邮 电 學 院基于Verilog的数字电路模拟实验系部名称:通信与信息工程学院学生姓名:张宏扬专业名称:通信工程班 级:通工0809学号:(01)时间:2010年12月20号实验题目 门级建模仿真实验一、实验内容 设计的一个带有清零的顺序输出结果的计数器,q从0计数到15二、技术规范1、 输入引脚:reset,clk;输出引脚:q。2、 功能:这时也个具有清零的计数器,从0到15输出的。在其中用到了T触发器和D触发器来实现它的功能。三、实验步骤1、在modulesim软件中对设计模块和验证模块进行书写和编译;2、对编译好的模块进行仿真。四、源代码:/脉动进位计

2、数器顶层模块module ripple_carry_counter(q,clk,reset);output 3:0q;input clk,reset;/生成了4个T触发器(T_FF)的实例,每个都有自己的名字T_FF tff0(q0,clk,reset);T_FF tff1(q1,q0,reset);T_FF tff2(q2,q1,reset);T_FF tff3(q3,q2,reset);endmodule/触发器T_FFmodule T_FF(q,clk,reset);output q;input clk,reset;wire d;D_FF dff0(q,d,clk,reset);not

3、n1(d,q); /非门(not)是Verilog语言的内置原语部件(primitive)endmodule/D触发器(D_FF)/带异步复位的D触发器(D_FF)module D_FF(q,d,clk,reset);output q;input d,clk,reset;reg q;/可以有许多种新结构,不考虑这些结构的功能,只需要注意设计块是如何以自顶向下的方式编写的always (posedge reset or negedge clk)if (reset) q= 1b0;else q= d;endmodulemodule stimulus;reg clk;reg reset;wire 3

4、:0q;/引用已经设计好的模块实例ripple_carry_counter r1(q,clk,reset);/控制驱动设计块的时钟信号,时钟周期为10个时间单位initialclk = 1b0; /把clk设置为0always #5 clk = clk; /每5个时间单位时钟翻转一次/控制驱动设计块的reset信号initialbegin reset = 1b1; #15 reset = 1b0; #180 reset = 1b1; #10 reset = 1b0; #20 $finish; /终止仿真end/监视输出initial $monitor($time, Output q = %d,

5、q);endmodule五、仿真结果及分析ClkReset013241501201q3:0仿真输出结果: 0 Output q = 0 20 Output q = 1 30 Output q = 2 40 Output q = 3 50 Output q = 4 60 Output q = 5 70 Output q = 6 80 Output q = 7 90 Output q = 8 100 Output q = 9 110 Output q = 10 120 Output q = 11 130 Output q =12 140 Output q = 13 150 Output q =14

6、 160 Output q =15 170 Output q = 0 180 Output q = 1190 Output q = 2195 Output q = 0210 Output q = 1220 Output q = 2实验题目 RS锁存器一、实验内容带有延迟的RS锁存器,写出其带有延迟的Verilog门级描述。编写其激励模块,根据下面的输入-输出关系表对其功能进行验证。setresetQn+100Qn01010111?在设计完成后,写出激励模块对其进行仿真。二、技术规范1、 输入引脚:reset,set;输出引脚: q,qbar,out。2、 功能:这是具有延迟的RS锁存器。Res

7、et为置位端,set为置零端。三、实验步骤1、在modulesim软件中对设计模块和验证模块进行书写和编译;2、对编译好的模块进行仿真。四、源代码:RS锁存器1. 设计模块:module SR_lach(q,qbar,reset,set); output q,qbar; input reset,set; nand #1(q,reset,qbar); nand #1(qbar,set,q);endmodule 2. 验证模块:module Top; wire Q,Qbar; reg Reset,Set; SR_latch (.reset(Reset),.q(Q),.qbar(Qbar),.set

8、(Set); initial begin $monitor($time,Set=%b,Reset=%b,Q=%bn,Set,Reset,Q); Set=0;Reset=0; #5 Reset=1; #5 Reset=0; #5 Set=1; #5 $finish; endendmodule五、仿真结果及分析RS锁存器实验题目: 两个四位二进制的比较器一、实验内容大小比较器的功能是比较两个数之间的关系:大于、小于或等于。一个四位大小比较器的输入是两个四位数A和B。我们可以将它们写成下面的形式,最左边的位为最高有效位:A =A(3) A(2) A(1) A(0)B =B(3) B(2) B(1)

9、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

10、) 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的几种组合,对模块的功能进行测试。二、实验步骤1、在modulesim软件中对设计模块和验证模块进行书写和编译;2、对编译好的模块进行仿真。三、源代码:module stimulus;reg 3:0 A_out,B_out;wire F1,F2,F3;magnitude_comparator sti(

11、A_out,B_out,F1,F2,F3);initialbegin # 0 A_out=4d0; B_out=4d1; # 10 A_out=4d2; B_out=4d2; # 10 A_out=4d5; B_out=4d1; # 10 A_out=4d15; B_out=4d10; # 10 A_out=4d10; B_out=4d3; # 10 A_out=4d6; B_out=4d6; # 10 A_out=4d8; B_out=4d14; # 10 A_out=4d12; B_out=4d12; # 20 $finish;endinitial begin $monitor($time

12、,A=%b,B=%b,A_gt_B=%d,A_it_B=%d,A_eq_B=%d,A_out,B_out,F1,F2,F3); endendmodule激励块:module magnitude_comparator(A,B,A_gt_B,A_it_B,A_eq_B);input 3:0 A,B;output A_gt_B,A_it_B,A_eq_B;wire 3:0 X;assign X0=(A0&B0) | (A0&B0), X1=(A1&B1) | (A1&B1), X2=(A2&B2) | (A2&B2), X3=(A3&B3) | (A3&B3);assign A_gt_B=(A3&B

13、3) | (X3&A2&B2) | (X3&X2&A1&B1) | (X3&X2&X1&A0&B0), A_it_B=(A3&B3) | (X3&A2&B2) | (X3&X2&A1&B1) | (X3&X2&X1&A0&B0), A_eq_B=X3&X2&X1&X0;endmodule四、仿真结果及分析实验题目:使用JK触发器设计一个计数器一、 实验内容:一个同步计数器可以使用主从JK触发器来设计。设计一个同步计数器,其逻辑图和JK触发器的逻辑图如书中图所示。清零信号clear低电平有效,输入数据在时钟信号clock的上升沿被锁存,触发器在clock的下降沿输出;当count_enable信

14、号为低电平时停止计数。写出同步计数器的Verilog描述和激励模块,在激励模块中使用clear和count_enable对计数器进行测试,并显示输出计数Q3:0。二、 技术规范:本次试验中共有三个模块,分别是JK主从触发器设计模块,计数器设计模块及激励模块。对于JK触发器,共有四个输入端(j,k,clear,clock),两个输出端(q,qbar),根据其实际电路结构做出相应的设计;对于计数器模块,有三个输入端(clear,clock,counter_clock),四个输出(Q3:0),使用的是四个JK触发器和门电路组合,采用同步清零和同步脉冲构成四位同步计数器;激励模块中根据技术模块输入端口

15、进行相关赋值以便进行仿真观察;三、实验步骤:1在modulesim软件中使用数据流建模进行四位计数器设计及输入;2.进行编译及仿真。四、 源代码:JK触发器模块:module m_c_jkff(q,qbar,J,K,clear,clock);output q,qbar;input J,K,clear,clock;wire a,b,c,d,y,ybar,cbar;assign cbar=clock;assign #1 a=(J & qbar & clock & clear), b=(K & q & clock), y=(a & ybar), ybar=(y & b & clear), c=(y

16、& cbar), d=(ybar & cbar);assign #1 q=(c & qbar);assign #1 qbar=(d & clear & q); endmodule计数器模块:module four_count_ff(Q,clear,clock,count_enable);output 3:0 Q;input clear,clock,count_enable;wire a1,a2,a3;assign a1=count_enable & Q0, a2=a1&Q1, a3=a2&Q2; m_c_jkff m1(Q0,count_enable,count_enable,clear,clock); m_c_jkff m2(Q1,a1,a1,clear,clock); m_c_jkff m3(Q2,a2,a2,clear,clock); m_c_jkff m4(Q3,a3,a3,clear,clock); endmodule激励模块:module stimulus;reg clock,clear,count_enable; wire 3:0 Q; initial $monitor($time,Count Q = %b Clear = %b,Q3:0,clear); four_count_ff f1(Q,clear,clock,count_enable);i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论