通信软件加法器计数器实例_第1页
通信软件加法器计数器实例_第2页
通信软件加法器计数器实例_第3页
通信软件加法器计数器实例_第4页
通信软件加法器计数器实例_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、通信软件加法器计数器实例 加法器是数字电路中最广泛应用的电路 之一,在CPU的ALU算数运算单元广泛 应用。 在算数运算中,加法器(减法器)是使 用最多的 第第2章章 加法器加法器/计数器实例计数器实例 通信软件加法器计数器实例 半加器定义:即是产生数的和的装置。加数和被加 数为输入,和数与进位为输出的装置为半加器。 全加器定义:若加数、被加数与低位的进位数为输 入,而和数与进位为输出则为全加器。 2.1 1位半加器位半加器adder设计实例设计实例 通信软件加法器计数器实例 1位半加法器的设计位半加法器的设计 数字系统通过0与1来实现复杂的系统工程,最简单的逻辑运算就是两 个1位进行加法的操

2、作。 通信软件加法器计数器实例 封装后的1bit半加法器 通信软件加法器计数器实例 代码 module adder(cout,sum,a,b); /模块名 output cout; / 输出端口声明 output sum; /输出端口声明 input a,b; /输入端口声明 wire cout,sum ; / wire变量声明 assign cout,sum=a+b; / a+b相加 endmodule / 模块结束语句 通信软件加法器计数器实例 Verilog Verilog 模块的结构由在模块的结构由在modulemodule和和 endmodule endmodule 关键词之间的四个

3、主要部分组关键词之间的四个主要部分组 成:成: module block1(a, b, c, d ); input a, b, c ; output d ; wire x; assign d = a | x ; assign x = ( b endmodule 通信软件加法器计数器实例 2.1.1 2.1.1 模块的端口定义模块的端口定义 模块的端口声明了模块的输入输出口。其格式如模块的端口声明了模块的输入输出口。其格式如 下:下: module module 模块名模块名( (口口1 1,口,口2 2,口,口3 3,口,口4, 4, );); 模块的内容包括模块的内容包括I/OI/O说明、内

4、部信号声明、功能说明、内部信号声明、功能 定义。定义。 输入口:input信号位宽1:0 端口名1; input信号位宽1:0 端口名2; input信号位宽1:0 端口名 i; /(共有i个输入口) 通信软件加法器计数器实例 输出口输出口 outputoutput信号位宽信号位宽1 1:0 0 端口名端口名1 1; outputoutput信号位宽信号位宽1 1:0 0 端口名端口名2 2; output output信号位宽信号位宽1 1:0 0 端口名端口名j j; /(/(共有共有j j个输出口个输出口) ) 输入输入/ /输出口:输出口: inoutinout信号位宽信号位宽1 1:

5、0 0 端口名端口名1 1; inoutinout信号位宽信号位宽1 1:0 0 端口名端口名2 2; inout inout信号位宽信号位宽1 1:0 0 端口名端口名k k; /(/(共有共有k k个双向总线端口个双向总线端口) ) I/O I/O说明也可以写在端口声明语句里。其格式如下:说明也可以写在端口声明语句里。其格式如下: module module_name(input port1,input port2,module module_name(input port1,input port2, output port1,output port2 output port1,outpu

6、t port2 ); ); 通信软件加法器计数器实例 assign语句 assign net_type = 表达式; 用它赋值的语言称为连续赋值语句。 连续赋值语句用于组合逻辑的建模。等式 左边是wire 类型的变量。等式右边可以是 常量、由运算符如逻辑运算符、算术运算 符参与的表达。 通信软件加法器计数器实例 wire型数据常用来表示用于以assign关键字 指定的组合逻辑信号。 Verilog程序模块中输入输出信号类型缺省时自 动定义为wire型。其格式 如下: wire n-1:0 数据名1,数据名2,数据名i; /共有i条总线,每条总线内有n条线路,或 wire n:1 数据名1,数据

7、名2,数据名i; 通信软件加法器计数器实例 2.1.2 adder Testbench 设计 什么是 Testbench 通信软件加法器计数器实例 如何编写Testbench 通信软件加法器计数器实例 2.1.2 adder Testbench的编写的编写 timescale 1ns/10ps /定义时间精度 include “adder.v” /引用模块 module adder_testbench; /定义测试模块 reg a,b; /初始化模块中寄存器定义 wire sum,cout; / 定义线网 integer i,j; adder adder_te( .sum ( sum ), .

8、cout ( cout), .a ( a ), .b ( b ) ); 通信软件加法器计数器实例 2.1.2 adder Testbench的编写的编写 initial /initial 语句同时立即执行,不需要时间 begin a=0;b=0; for(i=1;i16;i=i+1) #20 a=i; end initial begin for(j=1;j16;j=j+1) #10 b=j; end initial begin $monitor($time,%d + %d =%b,%d,a,b,cout,sum); #160 $finish; end endmodule 通信软件加法器计数器实

9、例 2.1.3 adder Testbench执行结果与仿真波形执行结果与仿真波形 # 20 1 + 0 =0,1 # 30 1 + 1 =1,0 # 40 0 + 0 =0,0 # 50 0 + 1 =0,1 通信软件加法器计数器实例 2.2 1bit全加法器全加法器full_add设计实例设计实例 2.2.1 1bit全加法器full_add 设计 通信软件加法器计数器实例 全加器的verilog代码 module full_add (a,b,cin,sum,cout); input a,b,cin; output sum,cout; reg sum,cout; reg m1,m2,m3;

10、 always (a or b or cin) begin sum = (a b) cin;/按位逻辑异或 m1 = a m2 = b m3 = a cout = (m1|m2)|m3; end endmodule 通信软件加法器计数器实例 Full_add Testbench代码代码 timescale 1ns/10ps include full_add.v module full_add_testbench; reg a,b,cin; wire sum,cout; integer i,j,k; full_add full_adder_te( .sum ( sum ), .cout ( co

11、ut), .a ( a ), .b ( b ), .cin ( cin) ); 通信软件加法器计数器实例 initial /a向量 begin a=0; for(i=1;i16;i=i+1) #20 a=a; /a周期为40ns end initial /b向量 begin b=0; for(j=1;j16;j=j+1) #10 b=b; / b周期为20ns end Initia / cin向量 begin cin=0; for(k=1;k0. 它给出了一个范围在(它给出了一个范围在(-b+1):(b-1)中的随机数。中的随机数。 reg23:0 rand; rand = $random %

12、 60; reg23:0 rand; rand = $random % 60; 给出了一个范围在给出了一个范围在59到到59 之间的随机数之间的随机数 通过位并接操作产生一个值通过位并接操作产生一个值 在在0到到59之间的数之间的数 通信软件加法器计数器实例 $monitor(p1,p2,.,pn); $monitor; $monitoron; $monitoroff; 任务任务$monitor提供了监控和输出参数列表中的表达式提供了监控和输出参数列表中的表达式 或变量值的功能。或变量值的功能。 每当参数列表中变量或表达式的值发生变化时,整个每当参数列表中变量或表达式的值发生变化时,整个 参数

13、列表中变量或表达式的值都将输出显示参数列表中变量或表达式的值都将输出显示 通信软件加法器计数器实例 $realtime系统函数。系统函数。$realtime和和$time 的作用是一样的,只是的作用是一样的,只是$realtime返回的返回的 时间数字是一个实型数,该数字也是以时时间数字是一个实型数,该数字也是以时 间尺度为基准的。间尺度为基准的。 p系统函数系统函数$time。$time可以返回一个可以返回一个64比特的比特的 整数来表示的当前仿真时刻值。该时刻是以模块整数来表示的当前仿真时刻值。该时刻是以模块 的仿真时间尺度为基准的。的仿真时间尺度为基准的。 通信软件加法器计数器实例 对于

14、不同的参数值,系统输出的特征信息:对于不同的参数值,系统输出的特征信息: 0 不输出任何信息不输出任何信息 1 输出当前仿真时刻和位置输出当前仿真时刻和位置 2 输出当前仿真时刻,位置和在仿真过程中所输出当前仿真时刻,位置和在仿真过程中所 用用memory及及CPU时间的统计时间的统计 格式:格式: $finish; $finish(n); 系统任务系统任务$finish的作用是退出仿真器,返回主操作系统,的作用是退出仿真器,返回主操作系统, 也就是结束仿真过程。任务也就是结束仿真过程。任务$finish可以带参数,根据参数的可以带参数,根据参数的 值输出不同的特征信息。如果不带参数,默认值输

15、出不同的特征信息。如果不带参数,默认$finish的参数的参数 值为值为1。 通信软件加法器计数器实例 作业 调试adder4 testbench 要求给出波形及仿真结果。 通信软件加法器计数器实例 2.4 4bit计数器count4设计实例 通信软件加法器计数器实例 Count 4 的顶层封装 通信软件加法器计数器实例 count4 count4 代码代码 module count4(qout,reset,clk); output3:0 qout; input clk,reset; reg3:0 qout; always (posedge clk) begin if (reset) qout

16、=0; else qout=qout+1; end endmodule 通信软件加法器计数器实例 timescale 1ns/1ns include count4.v module coun4_testbench; reg clk,reset; wire3:0 out; parameter DELY=100; count4 mycount(out,reset,clk); always #(DELY/2) clk = clk; initial begin clk =0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; end

17、initial $monitor($time,clk=%d reset=%d out=%d, clk, reset,out); endmodule 2.4.2 count4 testbench 设计设计 通信软件加法器计数器实例 # 0 clk=0 reset=0 out= x # 50 clk=1 reset=0 out= x # 100 clk=0 reset=1 out= x # 150 clk=1 reset=1 out= 0 # 200 clk=0 reset=0 out= 0 # 250 clk=1 reset=0 out= 1 # 300 clk=0 reset=0 out= 1

18、 # 350 clk=1 reset=0 out= 2 # 400 clk=0 reset=0 out= 2 # 450 clk=1 reset=0 out= 3 # 500 clk=0 reset=0 out= 3 # 550 clk=1 reset=0 out= 4 2.4.3 仿真结果与波形仿真结果与波形 通信软件加法器计数器实例 波形波形 通信软件加法器计数器实例 2.5 8bit BCD码计数器码计数器 count60 用用4位二进制数来表示位二进制数来表示1位十进制数中的位十进制数中的 09这这10个数码,简称个数码,简称BCD码,码, (Binary-Coded Decimal

19、)码又称)码又称8421 码表如下所示码表如下所示 通信软件加法器计数器实例 i/o 说明说明 功能:计数到60(16进制),data是载入计数 初始值,load为载入有效,cin为累加器计数有效, qout为计数输出值,cout为计数值达到60输出。 通信软件加法器计数器实例 count60 程序设计代码程序设计代码 module count60(qout,cout,data,load,cin,reset,clk); output7:0 qout; output cout; input7:0 data; input load,cin,clk,reset; reg7:0 qout; 通信软件加法器计数器实例 always (posedge clk) begin if (reset)qout=0; else if(load)qout=data; else if(cin) begin if(qout3:0=9) begin qout3

温馨提示

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

评论

0/150

提交评论