文档视界 最新最全的文档下载
当前位置:文档视界 › Verilog实验全加器与比较器的设计

Verilog实验全加器与比较器的设计

实验报告

课程名称:Verilog数字系统设计实验

实验项目:全加器与比较器的设计

姓名:

专业:计算机科学与技术

班级:

学号:

计算机科学与技术学院

实验教学中心

实验项目名称:全加器与比较器的设计

一、实验目的

1.学习用Verilog HDL语言描述组合逻辑电路。

2.学会Quartus II利用仿真与下载调试的程序方法。

二、实验内容

利用Verilog HDL语言设计四位全加器和比较器。

三、实验用设备仪器及材料

硬件:计算机软件:Quartus II软件

四、实验原理及接线

1. 数值比较器

用途是比较两个二进制数的大小。

一位数值比较器:比较输入的两个1位二进制数A、B的大小。

多位数值比较器:比较输入的两个位二进制数A、B的大小,比较时需从高位到低位逐位比较。

比较器功能框图:

G

S

E

B1

B0

下表是一位数值比较器的真值表。

表1-1 比较器真值表

2.全加器:全加器是实现两个一位二进制数及低位来的进位数相加(即将三个二进制数相加),求得和数及向高位进位的逻辑电路。所以全加器有三个输入端(Ai,Bi,Ci-1)和两个输出端Si,Ci+1。

真值表如下:

五、实验程序代码及仿真

1、比较器代码

module bijiaoqi(a,b,l,g,e,ledcom);

input[3:0] a,b;

output l,g,e;

output ledcom;

reg l,g,e;

always@(a,b)

begin

g = a>b ? 1:0;

l = a

e = a==b ? 1:0;

end

endmodule

比较器结果仿真结果

2、全加器代码

module add(a,b,cin,cout,sum); input a,b,cin;

output cout,sum;

wire a,b,cin,cout,sum;

wire w1,w2,w3,w4;

and u1(w1,a,b);

and u2(w2,a,cin);

and u3(w3,b,cin);

or #2 u4(cout,w1,w2,w3);

xor f1(w4,a,b);

xor #1 f2(sum,w4,cin);

endmodule

全加器结果仿真结果

六、心得与体会

通过本次实验,使我掌握了Verilog编程方法以及熟悉了如何使用QuartusII 软件。我了解了什么是比较器,什么是全加器,并且能够通过编程实现它们。同时进行了比较器和全加器的实验结果仿真。

不断的上机训练使我掌握了Verilogde 上机过程,了解Verilog语言的使用。从书本走到实际中进行操作,真正实现了语言的运用。

同时,我学回了把代码变成实际输出,看到成果让我十分开心。在实验中,我不但认识到了掌握Verilog知识的重要性,更能够理论充分的联系实际,实现了书本知识的良好掌握。

四位全加器实验Verilog

实验四四位全加器 一、实验目的 l. 用组合电路设计4位全加器。 2.了解Verilog HDL语言的行为描述的优点。 2、实验原理 4位全加器工作原理 1)全加器 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表中所列。 2)1位全加器 一位全加器(FA)的逻辑表达式为:S=A⊕B⊕Cin;Co=AB+BCin+ACin

其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出; 这两幅图略微有差别,但最后的结果是一样的。 3)4位全加器 4位全加器可看作4个1位全加器串行构成, 具体连接方法如下图所示:

采用Verilog HDL语言设计该4位全加器,通过主模块调用子模块(1位全加器)的方法来实现。 3、实验步骤

四、实验连线

K1-K4:14-11 K5-K8:18-15 L5-L8:7-10 VIJN:83 L4:6 4KHZ:80 5、心得体会 首先,实现这一段全加器代码并不难,但是由于困惑给的三个时钟输入,没有太懂意思,所以只写了全加器控制LED灯的代码;后来问清楚后,运行全加器代码,有错误,原来是建文件时用的是verilog hdl,我建的是其他类型的;后来还有错,原来是把冒号打成分号;编译成功后,LED不亮,后来发现是硬件老化,换了箱子。这一部分做好后,我准备把控制声音的加上去,本来准备再加一个模块,可是不能有两个顶层块,就对主模块做了补充,用case命令调用不同的状态,因为时间紧迫,所以代码写得比较简单,没有用经典的分频代码。这里附一小段,是我在研究分频控制时看懂的网上的经典分频代码,适合乐曲自动播放等高级的实现,仅供分享 assign preclk=(divider==16383)?1:0;//divider==16383,preclk=1 always @(posedge clk) //基频上升沿触发 begin if(preclk) //preclk=1

实验一1 1位全加器的设计

实验一1位全加器的设计 一、实验目的 1.熟悉ISE软件的使用; 2.熟悉下载平台的使用; 3.掌握利用层次结构描述法设计电路。 二、实验原理及说明 由数字电路知识可知,一位全加器可由两个一位半加器与一个或门构成,其原理图如图1所示。该设计利用层次结构描述法,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验板,其中a,b,cin 信号可采用实验箱上SW0,SW1,SW2键作为输入,输出sum,cout信号采用发光二极管LED3,LED2来显示。 图1 全加器原理图 三、实验步骤 1.在ISE软件下创建一工程,工程名为full_adder,工程路径在E盘,或DATA盘, 并以学号为文件夹,注意不要有中文路径,注意:不可将工程放到默认的软件安装 目录中。芯片名为Spartan3E系列的XC3S500E-PQG208 2.新建Verilog HDL文件,首先设计半加器,输入如下源程序; module half_adder(a,b,s,co); input a,b; output s,co;

wire s,co; assign co=a & b; assign s=a ^ b; endmodule 3.保存半加器程序为half_adder.v,通过HDL Bench画仿真波形,获得仿真用激励文 件,随后进行功能仿真、时序仿真,验证设计的正确性,观察两种仿真波形的差异。 4.在Design窗口中,选择Design Utilities→Create Schematic Symbol创建半加器模 块; 5.新建一原理图(Schematic)文件,在原理图中调用两个半加器模块、一个或门模块, 按照图1所示连接电路,并连接输入、输出引脚。完成后另保存full_adder.sch。 6.对设计进行综合,如出现错误请按照错误提示进行修改。 7.HDL Bench画仿真波形,获得仿真用激励文件,分别进行功能与时序仿真,验证全 加器的逻辑功能,观察两类波形的差异。 8.根据下载板的情况锁定引脚 9.下载,采用JATG方式进行下载,通过SW0,SW1,SW2输入,观察的LED2,LED3, 亮灭情况,验证全加器的逻辑功能。 四、思考题 1.为什么在实验步骤3中,将半加器保存为half_adder,可否保存为full_adder? 2.对电路进行功能仿真与时序仿真时,发现二者有什么样的区别? 3.为什么要进行引脚锁定? 4.采用层次结构法描述电路有什么样的优点?

Verilog实验全加器与比较器的设计

实验报告 课程名称:Verilog数字系统设计实验 实验项目:全加器与比较器的设计 姓名: 专业:计算机科学与技术 班级: 学号: 计算机科学与技术学院 实验教学中心

实验项目名称:全加器与比较器的设计 一、实验目的 1.学习用Verilog HDL语言描述组合逻辑电路。 2.学会Quartus II利用仿真与下载调试的程序方法。 二、实验内容 利用Verilog HDL语言设计四位全加器和比较器。 三、实验用设备仪器及材料 硬件:计算机软件:Quartus II软件 四、实验原理及接线 1. 数值比较器 用途是比较两个二进制数的大小。 一位数值比较器:比较输入的两个1位二进制数A、B的大小。 多位数值比较器:比较输入的两个位二进制数A、B的大小,比较时需从高位到低位逐位比较。 比较器功能框图: G S E B1 B0

下表是一位数值比较器的真值表。 表1-1 比较器真值表 2.全加器:全加器是实现两个一位二进制数及低位来的进位数相加(即将三个二进制数相加),求得和数及向高位进位的逻辑电路。所以全加器有三个输入端(Ai,Bi,Ci-1)和两个输出端Si,Ci+1。 真值表如下: 五、实验程序代码及仿真 1、比较器代码 module bijiaoqi(a,b,l,g,e,ledcom); input[3:0] a,b; output l,g,e; output ledcom; reg l,g,e; always@(a,b)

begin g = a>b ? 1:0; l = a

verilog多模块编程实例

Verilog多模块编程实例 1. 介绍 Verilog是一种硬件描述语言,被广泛应用于数字电路设计。Verilog 具有模块化设计的特点,可以将一个大型的电路设计分解成多个小模块,然后逐个实现和调试。本文将介绍Verilog多模块编程的实例, 以帮助读者了解如何使用Verilog进行模块化设计。 2. 模块化设计的优势 模块化设计是一种将大型系统分解成多个小模块的设计方法。在Verilog中,模块化设计有以下几个优势: - 提高代码可读性:通过将大型系统分解成多个小模块,可以提高代码的可读性和可维护性。 - 便于调试:每个小模块相对独立,可以单独调试和测试,提高了系统的可靠性和稳定性。 - 提高复用性:将功能相似的代码封装成模块,可以提高代码的复用性,减少代码冗余。 3. 多模块编程实例 接下来,我们将通过一个简单的数字电路设计来演示Verilog多模块 编程的实例。假设我们要设计一个4位全加器电路,首先我们需要实 现一个单位全加器模块,然后将四个单元全加器模块连接成一个4位 全加器模块。

3.1 单位全加器模块 我们定义一个单位全加器模块,代码如下: ```verilog module Adder_unit ( input a, b, cin, output sum, cout ); assign {cout, sum} = a + b + cin; endmodule ``` 在单位全加器模块中,我们定义了三个输入信号a、b、cin和两个输出信号sum、cout。其中,sum表示相加的结果,cout表示进位。在模块内部,我们通过assign语句实现了全加器的功能。 3.2 4位全加器模块 接下来,我们将四个单位全加器模块连接成一个4位全加器模块,代码如下: ```verilog module Adder_4bit ( input [3:0] a, b,

实验1 1位全加器设计

实验1 一位全加器设计 【实验目的】 1.掌握数字电路的两种设计方法 2.掌握在Cadence中绘制原理图的方法 3.掌握芯片外围特性与实现硬件电路 4.掌握Verilog HDL设计电路的方法。 【实验内容】 1.设计1位全加器 2.绘制1位全加器原理图 3.在面包板上实现1位全加器设计 4.用Verilog HDL行为描述法设计实现1位全加器并仿真 【实验器件】 1.异或门电路74HC86一片,内含四个异或门,异或门的引脚封装图与内部原理如图1-1所示。 图1-1 异或门74HC86的内部原理图与芯片封装图 2.与门电路芯片74HC08一片,内含四个与门,与门的引脚封装图与内部原理如图1-2所示。 图1-2与门74HC08的内部原理图与芯片封装图

3.或门电路芯片74HC32一片,内含四个或门,或门的引脚封装图与内部原理如图1-3所示。 图1-3或门74HC32的内部原理图与芯片封装图 4.3个1k的电阻和两个发光二极管,一个8路开关,5v电源,面包板一块,导线若干条。【实验步骤】 1.设计1位全加器 1)设1位全加器的输入为被加数为A,加数B,低位进位Cin;输出为本位和Sum,对高位的进位为Cout。 2)根据1位加法器的运算{Cout,Sum}=A+B+Cin列真值表如表吗-1所示。 表1-1 1位加法器真值表 3)根据真值表列出逻辑表达式 Cin B A Cin B A Cin B A Cin B A B A Cin AB B A ABCin Cin B A Cin B A Cin B A Sum ⊕ ⊕ = ⊕ + ⊕ = + + + = + + + = ) ( ) ( ) ( ) ( AB Cin B A ABCin Cin AB Cin B A BCin A Cout+ ⊕ = + + + =) ( 4)手动绘制该原理图,为电路加上开关控制数据输入,用发光二极管显示输出,电路图如图1-4所示。 图1-4 1位全加器原理图

四位全加器的VHDL与VerilogHDL实现

四位全加器的VHDL/VerilogHDL实现 加法器的分类 (一)半加器 能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。或:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。图1为半加器的方框图。图2为半加器原理图。其中:A、B分别为被加数与加数,作为电路的输入端;S 为两数相加产生的本位和,它和两数相加产生的向高位的进位C一起作为电路的输出。 根据二进制数相加的原则,得到半加器的真值表如表1所列。 信号输入信号输出 A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 表1 半加器的真值表 由真值表可分别写出和数S,进位数C的逻辑函数表达式为: (1) C=AB (2) 由此可见,式(1)是一个异或逻辑关系,可用一个异或门来实现;式(2)可用一个与门实现。仿真结果如图3所示: 图3 半加器仿真图 (二)全加器 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图4为全加器的方框图。图5全加器原理图。被加数A i、加数B i从低位向本位进位C i-1作为电路的输入,全加和S i与向高位的进位C i作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表2中所列。 信号输入端信号输出端 A i B i C i S i C i 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 表2 全加器逻辑功能真值表 多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。 五、加法器的VHDL实现 (一)半加器 VHDL语言描述语句为:

verilog实验

实验二:组合逻辑电路设计 一、实验目的: 学习组合逻辑电路,学习译码器的功能与定义,学习Verilog语言。 二、实验内容: 编写3-8译码器的Verilog 代码并仿真,编译下载验证。 三、实验环境 PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开发环境、AR1000核心板、SOPC-MBoard板、ByteBlaster II 下载电缆。 四、实验原理 译码是编码的逆过程,它的功能是将特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路成为译码器。 译码器可分为两种类型,一种是将一系列代码转换成与之一一对应得有效信号。这种译码器可以称为唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码换成一个有效信号,从而选中对应的单元。另一种是将一种代码转换成另一种代码,所以也称为代码变换器。 五、实验过程 1.代码

2.编译成功 3.波形simulation

4.仿真波形图

实验三:时序逻辑电路设计(一) 一、实验目的: 学习时序逻辑电路,学习计数器的原理,学习Verilog。 二、实验内容: 编写一个带预置输入,清零输入,可加/可减计数器的Verilog 代码并仿真。 三、实验环境 PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开发环境。 四、实验原理 计数器是数字系统中用的较多的基本逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时等功能。 计数器的种类很多。按脉冲方式可以分为同步计数器和异步计数器;按进制可以分为二进制计数器和非二进制计数器;按计数过程数字的增减,可分为加计数器、减计数器和可逆计数器。 本实验就是设计一个4位二进制加减法计数器,该计数器可以通过一个控制信号决定计数器时加计数还是减计数,另外,该寄存器还有一个清零输入,低电平有效。还有一个load装载数据的信号输入,用于预置数据;还有一个C的输出,用于计数器的级联。其功能表如表3-1所示;管脚定义如图3-1所示。 R CLK load up_down 状态 L x x x 置零 H x L x 置数 H ↑H 0 减法 H ↑H 1 加法 表3-1 4位二进制加减法计数器功能表

Verilog—大小比较器

西安邮电學院 基于Verilog的HDL设计基础 实验报告 系部名称:通信与信息工程学院 学生姓名: 专业名称:通信工程 班级: 学号: 时间:2010年12月11日

实验题目大小比较器 一、实验内容 大小比较器的功能是比较两个数之间的关系:大于、小于或等于。对其进行设计与验证;再对其进行综合生成网表文件;然后进行后仿真。 二、技术规范 输入引脚:A,B;输出引脚:A_gt_B,A_lt_B和A_eq_B。 写出模块magnitude_comparator的V erilog描述。写出激励模块并在模块中实例引用magnitude_ comparator模块。选择A和B的几种组合,对模块的功能进行测试。 三、实验步骤 1、在modulesim软件中进行JK主从触发器来设计的同步计数器的设计与 验证,直到运行结果全部正确; 2、在Quartus软件中对刚刚完成的计数器进行综合,生成网表文件; 3、在modulesim软件中对计数器进行进行后仿真。 四、源代码 1:设计模块: 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 2:激励模块 module stimulus; reg [3:0] A_out,B_out; wire F1,F2,F3; magnitude_comparator (A_out,B_out,F1,F2,F3); initial

八选一数据选择器和四位数据比较器verilog实验报告

八选一数据选择器和四位数据比较器verilog实验报告实验报告:八选一数据选择器和四位数据比较器 一、引言 数据选择器和数据比较器是数字电路中常用的基本电路模块,它们在 许多数字系统中起着重要的作用。本实验通过使用Verilog语言,设计并 实现了八选一数据选择器和四位数据比较器电路。本实验报告将分别介绍 这两个电路的设计原理、实验过程以及实验结果。 二、八选一数据选择器的设计 1.设计原理 八选一数据选择器是一种多路选择器,根据控制信号来选择其中一个 输入信号输出。其输入端包括8个数据输入信号(D0-D7)、3个控制信 号(S2、S1、S0)以及一个使能信号(EN),输出端为一个数据输出信号(Y)。当使能信号为高电平时,根据控制信号的值,将对应的输入信号 输出。 2.设计过程 本实验中,我们使用Verilog语言进行八选一数据选择器的设计。首先,我们声明输入输出端口: module mux8to1(input [7:0] D, input [2:0] S, input EN, output reg Y); 然后,我们使用case语句来实现根据控制信号选择输出信号的功能:begin

if (EN) case (S) 3'b000:Y=D[0]; 3'b001:Y=D[1]; 3'b010:Y=D[2]; 3'b011:Y=D[3]; 3'b100:Y=D[4]; 3'b101:Y=D[5]; 3'b110:Y=D[6]; 3'b111:Y=D[7]; default: Y = 1'bx; endcase else Y = 1'bx; end 最后,我们将设计的模块实例化并进行仿真和综合验证。 三、四位数据比较器的设计 1.设计原理

Verilog实验报告

实验报告册(-第2学期) 试验课程:VHDL 系别专业:信息工程 班级:1404 *名:** 任课教师:** 教育信息技术试验教学中心制

实验报告一、试验准备

二、试验过程

试验环节: 1、设计思绪 一种1位全加器可以用两个1位半加器及一种或门连接而成。而一种1位半加器可由基本门电路构成。半加器的真值表为 其中a为被加数,b为加数,so为本位和,co为本位向高位进位,因而可得体现式为:so=NOT(a XOR (NOT b)) ;而co=a AND b ;其原理图形如下: 而全加器的真值表如下: 其中ain为被加数,bin为加数,cin为低位向本位的进位,sum为本位向高位的进位,cout为本位和其原理图如图所示:

2、设计全加器 (1)、在File菜单中选择New项,将出现新建文献对话框。选择“Device Design File->Block Diagram->Schematic File”项。点击“OK”,在主界面中将打开“Block Editor”窗口。 (2)元件的添加:在绘图区点击鼠标右键->Insert->Symbol…或双击鼠标左键,弹出对应的Symbol对话框,在name栏输入需添加的元件,input(输入引脚),两个h_suber ,or2(两输入或门),output(输出引脚)等,回车或点击ok,此时在鼠标光标处将出现该元件图标,并随鼠标的移动而移动,在合适的位置点击鼠标左键,放置一种元件。设计好的全加器如原理图所示。保留文献:从“File” 菜单下选择“Save”,出现文献保留对话框,选择文献夹d:suber(与刚刚的半加器选在同一种文献夹下必须)。单击“OK”. (3)试验程序来自书上(由于汇报书有限,略)

74138的实验报告

74138的实验报告 数字系统设计综合实验报告 数字系统设计综合实验报告 实验名称:1、加法器设计 2、编码器设计 3、译码器设计 4、数据选择器设计 5、计数器设计 6、累加器设计 7、交通灯控制器设计 班级: 姓名: 学号: 指导老师: 实验1 加法器设计 1) 实验目的 (1) 复习加法器的分类及工作原理。 (2) 掌握用图形法设计半加器的方法。 (3) 掌握用元件例化法设计全加器的方法。 (4) 掌握用元件例化法设计多位加法器的方法。 (5) 掌握用Verilog HDL语言设计多位加法器的方法。 (6) 学习运用波形仿真验证程序的正确性。 (7) 学习定时分析工具的使用方法。

2) 实验原理 加法器是能够实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。目前,在数字计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。加法器可分为1位加法器和多位加法器两大类。1位加法器有可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。 (1)半加器 如果不考虑来自低位的进位而将两个1位二进制数相加,称半加。实现半加运算的电路则称为半加器。若设A和B是两个1位的加数,S是两者相加的和,C是向高位的进位。则由二进制加法运算规则可以得到。 (2)全加器 在将两个1位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称全加。实现全加运算的电路则称为全加器。 若设A、B、CI分别是两个1位的加数、来自低位的进位,S是相加 的和,C是向高位的进位。则由二进制加法运算规则可以得到: 3) (1) (2) (3) 实验内容及步骤用图形法设计半加器,仿真设计结果。用原件例化的方法设计全加器,仿真设计结果用原件例化的方法设计一个4为二进制加法器,仿真设计结果, 进行定时分析。 (4) 用Verilog HDL语言设计一个4为二进制加法器,仿真设计结

Verilog HDL《数字加法器》报告

实验三数字加法器的设计 一、实验目的 1. 掌握数字加法器的工作原理和逻辑功能。 2. 熟悉ISE集成开发环境。 3. 熟悉ISE中进行开发设计的流程。 二、实验环境 1. 装有ModelSim和ISE的计算机。 2. Sword实验系统。 三、实验任务 1. 用VerilogHDL语言设计实现4位串行数字加法器和4位并行加法器,在ModelSim上仿真实现。 2. 生成FPGA设计文件,下载到Sword实验系统上验证电路功能。 四、实验原理与实验步骤 1. 实验原理 数字加法器是一种较为常用的逻辑运算器件,被广泛用于计算机、通信和多媒体数字集成电路中。广义的加法器包括加法器和减法器,在实际系统中加法器输入通常采用补码形式。此次实验仅考虑加法运算,分别完成4位的串行进位加法器设计和4位的并行进位加法器设计。 (1) 1 bit全加器 最简单的一位全加器的结构,设定两个二进制数字A i ,B i 和一个进位输入 C i 相加,产生一个和输出S i ,以及一个进位输出C i+1 。 S i = A i ⊕B i ⊕C i C i+1 = A i B i +B i C i +C i A i = A i B i +﹙A i ⊕B i ﹚C i

(2) 4位串行进位加法器 n位串行进位全加器原理示意图 (3) 4位并行进位加法器 超前进位加法器是一种高速加法器,每级进位由附加的组合电路产生,高位的运算不需等待低位运算完成,因此可以提高运算速度。 各级进位信号表达式的推导过程 C i+1 = A i B i +(A i ⊕B i )C i 设: G i = A i B i P i = A i ⊕B i 则有: S i = P i ⊕C i C i+1= G i +P i C i 4位并行进位的逻辑表达式为: C C 1= G +P C C 2= G 1 +P 1 C 1 = G 1 + P 1 (G +P C ) = G 1 + G P 1 +P P 1 C C 3= G 2 +P 2 C 2 = G 2 + P 2 (G 1 +G P 1 +P P 1 C ) = G 2 + G 1 P 2 +G P 1 P 2 +P P 1 P 2 C C 4= G 3 +P 3 C 3 =G 3 + P 3 (G 2 +…+P P 1 P 2 C ) = G 3 +G 2 P 3 +G 1 P 2 P 3 +G P 1 P 2 P 3 +P P 1 P 2 P 3 C

verilog实现8字节比较器

《8字节比较器》实验报告

* By * All right reserved * */ module compare(qOut,a,b); input [7:0]a,b; // 输入为两个8位的数 output qOut; // 输出为一个1位的数 reg qOut; // 输出qOut是一个寄存器类型的数 always @(a or b) // 当a 或者 b发生了变化,则条件触发 if(a>b) //如果a>b,则令输出为高电平 qOut =1; else //如果a

*/ /* Copyright(C) 2010- * By 陈昊 * All right reserved */ `timescale 1ns/1ns //第一个1ns是时间单位,第二个1ns是时间精度 module test_compare; //测试向量的模块名是test reg [7:0] a; //声明两个输入为寄存器类型,而且是8位reg [7:0] b; wire qOut; //声明输出为线网类型,默认为1位 initial begin a=8'b10000000; b=8'b00000000; // a > b,qOut = 1; #10 a=8'b00001000; b=8'b00001111; // a < b,qOut = 0; #10 a=8'b10001111; b=8'b00011111; // a > b,qOut = 1; #10 a=8'b11111111; b=8'b11111111; // a = b,qOut = 0; #10 a=8'b10101010; b=8'b00001111; // a > b,qOut = 1; #10 $stop; end compare example(.qOut(qOut),.a(a),.b(b)); //实例引用compare模块

数字电子技术基础Verilog语言编程设计习题

数字电子技术基础Verilog语言编程设计习 题 Verilog语言是数字电子技术中广泛应用的硬件描述语言,本文将介绍一些基础的Verilog编程设计习题。通过完成这些习题,读者能够加 深对数字电子技术和Verilog语言的理解,并提高Verilog编程的能力。 一、多输入多输出逻辑门设计习题 1. 设计一个四位全加器,实现任意两个四位二进制数的相加运算功能。 module full_adder( input [3:0] A, input [3:0] B, input Cin, output [3:0] S, output Cout ); wire [3:0] sum; assign sum[0] = A[0] ^ B[0] ^ Cin; assign sum[1] = A[1] ^ B[1] ^ (A[0] & B[0]) ^ Cin; assign sum[2] = A[2] ^ B[2] ^ (A[1] & B[1]) ^ (A[0] & B[0]) ^ Cin;

assign sum[3] = A[3] ^ B[3] ^ (A[2] & B[2]) ^ (A[1] & B[1]) ^ (A[0] & B[0]) ^ Cin; assign S = sum; assign Cout = (A[3] & B[3]) ^ (A[2] & B[2]) ^ (A[1] & B[1]) ^ (A[0] & B[0]) ^ Cin; endmodule 2. 设计一个八位比较器,判断两个八位二进制数是否相等。 module comparator( input [7:0] A, input [7:0] B, output EQ ); wire [7:0] difference; assign difference = A ^ B; assign EQ = (difference[7] | difference[6] | difference[5] | difference[4] | difference[3] | difference[2] | difference[1] | difference[0])==0; endmodule 二、时序逻辑电路设计习题 1. 设计一个六位计数器,实现每秒钟加一功能。 module counter(

verilog语言编写8位全加器

8位全加器 一、实验目的 用verilog语言编写一个8位全加器,并在modelsim软件上进行仿真。 二、代码 一、源代码: module add8(sum,cout,in1,in2,cin); input [7:0] in1,in2; input cin; output [7:0] sum; output cout; assign {cout,sum}=in1+in2+cin; endmodule 二、鼓励: `timescale 1ns/100ps module add8_tb; reg[7:0] A,B; reg CIN; wire [7:0] SUM; wire COUT;

add8 ul( .sum(SUM), .cout(COUT), .in1(A), .in2(B), .cin(CIN) ); initial begin A=8'd0;B=8'd0;CIN=1'b0; #10 A=8'd20;B=8'd129;CIN=1'b1; #10 A=8'd27;B=8'd19;CIN=1'b0; #10 A=8'd157;B=8'd29;CIN=1'b0; #10 A=8'd37;B=8'd68;CIN=1'b0; #10 A=8'd11;B=8'd69;CIN=1'b0; #10 A=8'd54;B=8'd67;CIN=1'b1; #10 A=8'd211;B=8'd0;CIN=1'b0; #10 A=8'd87;B=8'd43;CIN=1'b1; #10 A=8'd23;B=8'd171;CIN=1'b0; #10 A=8'd12;B=8'd12;CIN=1'b1; #10 A=8'd112;B=8'd115;CIN=1'b0; end endmodule 三、实验进程

杭电计组实验1-全加器设计实验

杭电计组实验1-全加器设计实验 杭州电子科技大学计算机学院实验报告实验项目:实验1-全加器设计实验课程名称:计算机组成原理与系统结构课程设计姓名: 学号: 同组姓名: 学号: 实验位置(机号): 自己的笔记本实验日期: 指导教师: 实验内容(算法、程序、步骤和方法)一、实验目的(1),学习ISE工具软件的使用及仿真方法(2)学习FPGA程序的下载方法(3)熟悉Nexys3实验板(4)掌握运用VerilogHDL进行结构描述与建模的技巧和方法(5)掌握二进制全加器的原理和设计方法二、实验仪器ISE工具软件三、步骤、方法(1)启动XilinxISE 软件,选择File-NewProject,输入工程名,默认选择后,点击Next按钮,确认工程信息后点击Finish按钮,创建一个完整的工程。 (2)在工程管理区的任意位置右击,选择NewSource命令。弹出NewSourceWizard对话框,选择VerilogModule,并输入Verilog文件名shiyan1,点击Next按钮进入下一步,点击Finish完成创建。 (3)编辑程序源代码,然后编译,综合;选择Synthesize--XST项中的CheckSyntax右击选择Run命令,并查看RTL视图;如果编译出错,则需要修改程序代码,直至正确。 (4)在工程管理区将View类型设置成Simulation,在任意位置右击,选择NewSource命令,选择VerilogTestFixture选项。输入文件名shiyan1_test,点击Next,点击Finish,完成。编写激励代码,观察仿真波形,如果验证逻辑有误,则修改代码,重新编译,仿真,直至正确。 (5)由于实验一并未链接实验板,所以后面的链接实验板的步骤此处没有。 操作过程及结果一、操作过程实验过程和描述: moduleshiyan1(A,B,C,F,Ci);inputA,B,C;outputF,Ci;wireA,B,C,F,Ci;wi reS1,S2,S3;xorXU1(F,A,B,C),XU2(S1,A,B);andAU1(S2,A,B),AU2(S3,S1,C);or OU1(Ci,S2,S3);endmodule仿真代码 moduleshiyan1_test;//InputsregA;regB;regC;//OutputswireF;wireCi;/ /InstantiatetheUnitUnderTest(UUT)shiyan1uut(.A(A),.B(B),.C(C),.F(F),. Ci(Ci));initialbegin//InitializeInputsA=0;B=0;C=0;//Wait100nsforgloba lresettofinish#100;//AddstimulushereA=0;B=0;C=0;#100A=0;B=0;C=1;#100A =0;B=1;C=0;#100A=0;B=1;C=1;#100A=1;B=0;C=0;#100A=1;B=0;C=1;#100A=1;B= 1;C=0;#100A=1;B=1;C=1;EndRTL图 二、结果 思考题: ((1)根据查看顶层模块RTL的最外层的输入输出接口,和实验指导书式(14.1)所示电路相比,该电路图的输入输出引脚和这个加法器的引脚图式是相符合的。 ((2))尝试使用数据流描述方式现实现

FPGA一位全加器设计实验报告

题目:1位全加器的设计 一.实验目的 1.熟悉QUARTUSII软件的使用; 2.熟悉实验硬件平台的使用; 3.掌握利用层次结构描述法设计电路。 二.实验原理 由于一位全加器可由两个一位半加器与一个或门构成,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验箱,其中ain,bin,cin信号可采用实 验箱上SW0,SW1,SW2键作为输入,并将输 入的信号连接到红色LED管 LEDR0,LEDR1,LEDR2上便于观察,sum,cout 信号采用绿色发光二极管LEDG0,LEDG1来 显示。 三.实验步骤 1.在QUARTUSII软件下创建一工程,工程名为full_adder,芯片名为EP2C35F672C6; 2.新建Verilog语言文件,输入如下半加器Verilog语言源程序; module half_adder(a,b,s,co); input a,b; output s,co; wire s,co; assign co=a & b; assign s=a ^ b; Endmodule 3.保存半加器程序为,进行功能仿真、时序仿真,验证设计的正确性。 其初始值、功能仿真波形和时序仿真波形分别如下所示

4.选择菜单File→Create/Update→Create Symbol Files for current file,创建半加器模块; 5.新建一原理图文件,在原理图中调用半加器、或门模块和输入,输出引脚,按照图1所示连接电路。并将输入ain,bin,cin连接到FPGA的输出端,便于观察。完成后另保存full_adder。 电路图如下 6.对设计进行全编译,锁定引脚,然后分别进行功能与时序仿真,验证全加器的逻辑功能。其初始值、功能仿真波形和时序仿真波形分别如下所示

数字系统设计综合实验报告

数字系统设计综合试验报告 试验名称:1、加法器设计 2、编码器设计 3、译码器设计 4、数据选择器设计 5、计数器设计 6、累加器设计 7、交通灯限制器设计 班级: 姓名: 学号: 指导老师:

试验1 加法器设计 1)试验目的 (1)复习加法器的分类及工作原理。 (2)驾驭用图形法设计半加器的方法。 (3)驾驭用元件例化法设计全加器的方法。 (4)驾驭用元件例化法设计多位加法器的方法。 (5)驾驭用Verilog HDL语言设计多位加法器的方法。 (6)学习运用波形仿真验证程序的正确性。 (7)学习定时分析工具的运用方法。 2)试验原理 加法器是能够实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。目前,在数字计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。加法器可分为1位加法器和多位加法器两大类。1位加法器有可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。 (1)半加器 假如不考虑来自低位的进位而将两个1位二进制数相加,称半加。实现半加运算的电路则称为半加器。若设A和B是两个1位的加数,S 是两者相加的和,C是向高位的进位。则由二进制加法运算规则可以得到。 (2)全加器 在将两个1位二进制数相加时,除了最低位以外,每一位都应当考虑

来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称全加。实现全加运算的电路则称为全加器。 若设A、B、CI分别是两个1位的加数、来自低位的进位,S是相加的和,C是向高位的进位。则由二进制加法运算规则可以得到:3)试验内容及步骤 (1)用图形法设计半加器,仿真设计结果。 (2)用原件例化的方法设计全加器,仿真设计结果 (3)用原件例化的方法设计一个4为二进制加法器,仿真设计结果,进行定时分析。 (4)用Verilog HDL语言设计一个4为二进制加法器,仿真设计结果,进行定时分析。 (5)分别下载用上述两种方法设计4为加法器,并进行在线测试。 4)设计 1)用图形法设计的半加器,如下图1所示,由其生成的符号如图2 所示。

相关文档