数字逻辑实验报告-Verilog时序逻辑设计

合集下载

verilog实验报告

verilog实验报告

verilog实验报告Verilog实验报告引言:Verilog是一种硬件描述语言(HDL),用于设计和模拟数字电路。

它是一种高级语言,能够描述电路的行为和结构,方便工程师进行数字电路设计和验证。

本实验报告将介绍我在学习Verilog过程中进行的实验内容和所获得的结果。

实验一:基本门电路设计在这个实验中,我使用Verilog设计了基本的逻辑门电路,包括与门、或门和非门。

通过使用Verilog的模块化设计,我能够轻松地创建和组合这些门电路,以实现更复杂的功能。

我首先创建了一个与门电路的模块,定义了输入和输出端口,并使用逻辑运算符和条件语句实现了与门的功能。

然后,我创建了一个测试模块,用于验证与门的正确性。

通过输入不同的组合,我能够验证与门的输出是否符合预期。

接下来,我按照同样的方法设计了或门和非门电路,并进行了相应的测试。

通过这个实验,我不仅学会了使用Verilog进行基本门电路的设计,还加深了对逻辑电路的理解。

实验二:时序电路设计在这个实验中,我学习了如何使用Verilog设计时序电路,例如寄存器和计数器。

时序电路是一种具有状态和时钟输入的电路,能够根据时钟信号的变化来改变其输出。

我首先设计了一个简单的寄存器模块,使用触发器和组合逻辑电路实现了数据的存储和传输功能。

然后,我创建了一个测试模块,用于验证寄存器的正确性。

通过输入不同的数据和时钟信号,我能够观察到寄存器的输出是否正确。

接下来,我设计了一个计数器模块,使用寄存器和加法电路实现了计数功能。

我还添加了一个复位输入,用于将计数器的值重置为初始状态。

通过测试模块,我能够验证计数器在不同的时钟周期内是否正确地进行计数。

通过这个实验,我不仅学会了使用Verilog设计时序电路,还加深了对触发器、寄存器和计数器的理解。

实验三:组合电路设计在这个实验中,我学习了如何使用Verilog设计组合电路,例如多路选择器和加法器。

组合电路是一种没有状态和时钟输入的电路,其输出只取决于当前的输入。

最新Verilog数字电路设计--实验报告

最新Verilog数字电路设计--实验报告

Verilog数字电路设计实验名称Verilog数字电路设计班级130324姓名张先炳13031205同组者廖瑞13031191自动化与电气工程学院2016年4月25日目录目录 (2)实验一简单组合逻辑设计 (1)1 实验目的 (1)2 实验设备 (1)3 实验内容 (1)4 实验代码 (1)5 仿真结果 (2)选作一:设计一个字节的比较器 (3)1 实验要求 (3)2 模块代码 (3)3 测试代码 (3)4 仿真结果 (4)实验二简单分频时序逻辑电路的设计 (4)1 实验目的 (4)2 实验设备 (4)3 实验内容 (5)4 实验代码 (5)5 仿真结果 (6)选作二:七段数码管译码电路 (6)1 实验要求 (6)2 模块代码 (7)3 测试代码 (8)4 仿真结果 (8)实验三:利用条件语句实现计数分频时序电路 (9)1 实验目的 (9)2 实验设备 (9)3 实验内容 (9)4 实验代码 (9)5 仿真结果 (11)6 实验分析 (11)选作三:设计一个单周期形状的周期波形。

(11)1 实验要求 (11)2 模块代码 (11)3 测试代码 (12)4 仿真结果 (13)实验四:用always块实现较复杂的组合逻辑 (13)1 实验目的 (13)2 实验设备 (13)3 实验内容 (13)4 实验代码 (14)5 仿真结果 (16)选作四:运用always块设计一个8路数据选择器。

(16)1 实验要求 (16)2 模块代码 (16)3 测试代码 (17)4 仿真结果 (18)实验五:在Verilog HDL中使用函数 (19)1 实验目的 (19)2 实验设备 (19)3 实验内容 (19)4 实验代码 (19)5 仿真结果 (21)选作五:设计一个带控制端的逻辑运算电路 (22)1 实验要求 (22)2 模块代码 (22)3 测试代码 (23)4 仿真结果 (25)实验六:在Verilog HDL中使用任务(task) (25)1 实验目的 (25)2 实验设备 (25)3 实验内容 (25)4 实验代码 (25)5 仿真结果 (28)选作六:冒泡法排序 (28)1 实验要求 (28)2 模块代码 (28)3 测试代码 (29)4 仿真结果 (30)选作七:串行输入排序 (30)1 实验要求 (30)2 模块代码 (31)3 测试代码 (32)4 仿真结果 (33)5 实验分析 (34)实验七:利用有限状态机进行时序逻辑的设计 (34)1 实验目的 (34)2 实验设备 (34)3 实验内容 (35)4 实验代码 (35)5 仿真结果 (37)6 实验分析 (37)选作八:楼梯灯 (37)1 实验要求 (37)2 模块代码 (38)3 测试代码 (45)4 仿真结果 (47)5 实验分析 (47)附:分工明细 (49)实验一简单组合逻辑设计1 实验目的1、掌握基本组合逻辑电路的实现方法。

数字电路与逻辑设计实训课程学习总结基于Verilog的多功能计数器设计与实现

数字电路与逻辑设计实训课程学习总结基于Verilog的多功能计数器设计与实现

数字电路与逻辑设计实训课程学习总结基于Verilog的多功能计数器设计与实现数字电路与逻辑设计是计算机科学与技术专业的一门重要课程,通过学习这门课程,我深入了解了数字电路与逻辑设计的基本原理和Verilog语言的应用。

在实践中,我通过设计与实现基于Verilog的多功能计数器,不仅巩固了理论知识,而且提高了自己的实践能力和问题解决能力。

首先,在学习数字电路与逻辑设计的过程中,我了解到数字电路是基于二进制运算的电子电路系统,其中包括了门电路、触发器、寄存器等基本组件。

通过对这些组件的学习和理解,我能够准确地分析和设计各种数字电路电子产品。

其次,我学习了Verilog语言的基本语法和使用方法。

Verilog是一种硬件描述语言,可以用来描述数字电路的结构和功能。

通过学习Verilog语言,我可以使用模块化和层次化的设计思路来实现复杂的数字电路功能。

在实践中,我选择了设计和实现一个多功能计数器作为我的项目。

该多功能计数器能够实现多种计数模式,并且能够通过外部输入信号进行控制。

在设计的过程中,我首先进行了功能需求的分析和设计,然后结合Verilog语言的特点,采用模块化设计的思路,将计数器分为了多个子模块,分别实现不同的功能。

最后,我进行了仿真和综合验证,确保设计的正确性和稳定性。

在实现的过程中,我遇到了一些困难和问题,但通过查阅资料和与同学的讨论,我逐渐解决了这些问题。

例如,在设计过程中,我遇到了一些时序逻辑的问题,通过调整时钟信号和状态转移的顺序,最终解决了这些问题。

另外,在测试和验证的过程中,我遇到了一些功能异常的情况,通过对代码的仔细分析和调试,最终找到了问题的源头并进行了修复。

通过这个实训项目,我不仅深入理解了数字电路与逻辑设计的原理,还提高了我的实践能力和问题解决能力。

我学会了如何使用Verilog语言来描述和实现数字电路,如何进行功能需求的分析和设计,如何进行仿真和综合验证。

这对于我今后的学习和工作都具有重要的意义。

时序逻辑电路的Verilog_HDL实现实验报告

时序逻辑电路的Verilog_HDL实现实验报告

时序逻辑电路的Verilog HDL 实现一.实验要求(1):编写JK 触发器、8位数据锁存器、数据寄存器的Verilog HDL 程序,并实现其仿真及其测试程序;(2):在实验箱上设计含异步清零和同步使能的计数器。

(3):进行波形仿真测试后;画出仿真波形。

(4):写出实验心得二.实验内容:(1)1.JK 触发器的元件符号如图7.14所示,其中J 、K 是数据输入端,CLR 是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK 是时钟输入端;Q 和QN 是触发器的两个互补输出端。

JK 触发器的状态方程为Q n+1 =J Q n +K Q nJK 触发器的verilog HDL 程序module jkff_rs(clk,j,k,q,rs,set); input clk,j,k,set,rs;output reg q;always@(posedge clk,negedge rs,negedge set)begin if(!rs) q<=1'b0;else if(!set) q<=1'b1;else case({j,k})2'b00:q<=q;2'b01:q<=1'b0;2'b10:q<=1'b1;2'b11:q<=~q;default:q<=1'bx;endcaseendendmoduleJK 触发器的功能:带异步清0,异步置1(低电平有效)JK 触发器的仿真结果JK 触发器的元件符号2.8位数据锁存器锁存器元件符号如图所示。

CLR是复位控制输入端,当CLR=0时,8位数据输出Q[7..0]=00000000。

ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q[7..0]=D[7..0];ENA=0时,锁存器的状态保持不变。

OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。

Verilog 实验报告

Verilog 实验报告

Verilog 实验报告一、实验目的本次 Verilog 实验的主要目的是通过实际编写代码和进行仿真,深入理解 Verilog 语言的基本语法、逻辑结构和时序特性,掌握数字电路的设计方法和实现过程,并能够运用Verilog 实现简单的数字逻辑功能。

二、实验环境本次实验使用的软件工具是 Xilinx Vivado 20192,硬件平台是Xilinx Artix-7 开发板。

三、实验内容(一)基本逻辑门的实现1、与门(AND Gate)使用 Verilog 语言实现一个两输入的与门。

代码如下:```verilogmodule and_gate(input a, input b, output out);assign out = a & b;endmodule```通过编写测试激励文件对该模块进行仿真,验证其逻辑功能的正确性。

2、或门(OR Gate)同样实现一个两输入的或门,代码如下:```verilogmodule or_gate(input a, input b, output out);assign out = a | b;endmodule```3、非门(NOT Gate)实现一个单输入的非门:```verilogmodule not_gate(input a, output out);assign out =~a;endmodule```(二)组合逻辑电路的实现1、加法器(Adder)设计一个 4 位的加法器,代码如下:```verilogmodule adder_4bit(input 3:0 a, input 3:0 b, output 4:0 sum);assign sum = a + b;endmodule```2、减法器(Subtractor)实现一个 4 位的减法器:```verilogmodule subtractor_4bit(input 3:0 a, input 3:0 b, output 4:0 diff);assign diff = a b;endmodule```(三)时序逻辑电路的实现1、计数器(Counter)设计一个 4 位的计数器,能够在时钟上升沿进行计数,代码如下:```verilogmodule counter_4bit(input clk, output 3:0 count);reg 3:0 count_reg;always @(posedge clk) begincount_reg <= count_reg + 1;endassign count = count_reg;endmodule```2、移位寄存器(Shift Register)实现一个 4 位的移位寄存器,能够在时钟上升沿进行左移操作:```verilogmodule shift_register_4bit(input clk, input rst, output 3:0 data_out);reg 3:0 data_reg;always @(posedge clk or posedge rst) beginif (rst)data_reg <= 4'b0000;elsedata_reg <={data_reg2:0, 1'b0};endassign data_out = data_reg;endmodule```四、实验结果与分析(一)基本逻辑门的结果通过仿真,与门、或门和非门的输出结果与预期的逻辑功能完全一致,验证了代码的正确性。

数字系统设计与Verilog HDL实验报告(二)

数字系统设计与Verilog HDL实验报告(二)

《数字系统设计与Verilog HDL》实验报告(二)班级:自动1003班姓名:**学号:********实验二、四位并串转换电路一、实验目的1、了解及掌握时序电路的基本结构常用数字电路;2、通过ModelSim软件编写时序电路的程序进行仿真和调试。

二、实验内容1、熟悉时序电路中时钟的同步与异步用法;2、编写一个四位并串转换设计程序以及测试该模块的测试程序,要求如下:(1)输入一个四位二进制数pin;(2)每个时钟周期按从左往右的顺序输出一位pin的二进制位的数。

三、实验步骤及源程序新建工程及文件,分别添加设计程序及测试程序,进行编译及纠错,编译通过后运行程序仿真进行调试得出结果。

设计模块:module para_to_serial4(pin,clk,reset,sout);input [3:0] pin;input clk,reset;output sout;reg sout;reg [3:0] data;always @(posedge clk or negedge reset)beginif(~reset)beginsout<=1'b0;data<=pin;endelsebegindata<={data[2:0],data[3]};sout<=data[3];endendendmodule测试模块:`timescale 1ns/1nsmodule test_para_to_ser;wire sout;reg [3:0] pin;reg clk,reset;para_to_serial4 test1(pin,clk,reset,sout);initialbeginclk=1'b0;reset=1'b0;#5 reset=1'b1;#300 $stop;endinitialpin=4'b1001;always#5 clk=~clk;endmodule四、实验结果五、实验心得体会这次试验相对于上次有了一定的难度,由于这门课程刚开始学习,我还不能很好地从宏观把握这门课程,对这门课程的认识和理解还不够深刻,所以做实验时遇到了一些困难,虽然找了一些参考资料,有一定的帮助,但最后还是有点纠结,最终在和同学的交流中才比较深刻的对实验有了了解。

数字逻辑综合实验报告

数字逻辑综合实验报告

一、实验目的本次实验旨在通过实际操作,加深对数字逻辑基本原理和设计方法的理解,提高学生在数字电路设计、仿真和调试方面的实践能力。

通过完成以下实验任务,使学生掌握以下技能:1. 理解数字逻辑电路的基本概念和原理。

2. 掌握数字逻辑电路的设计方法和步骤。

3. 学会使用仿真软件进行电路设计和仿真测试。

4. 掌握数字逻辑电路的调试和优化方法。

二、实验内容本次实验主要包含以下三个部分:1. 组合逻辑电路设计:设计一个四位加法器,并使用Logisim软件进行仿真测试。

2. 时序逻辑电路设计:设计一个简单的计数器,并使用Verilog语言进行描述和仿真。

3. 数字逻辑电路综合应用:设计一个简单的数字信号处理器,实现基本的算术运算。

三、实验步骤1. 组合逻辑电路设计(1)分析题目要求,确定设计目标和输入输出关系。

(2)根据输入输出关系,设计四位加法器的逻辑电路。

(3)使用Logisim软件搭建电路,并设置输入信号。

(4)观察仿真结果,验证电路功能是否正确。

2. 时序逻辑电路设计(1)分析题目要求,确定设计目标和状态转移图。

(2)使用Verilog语言描述计数器电路,包括模块定义、输入输出定义、状态定义和状态转移逻辑。

(3)使用仿真软件进行测试,观察电路在不同状态下的输出波形。

3. 数字逻辑电路综合应用(1)分析题目要求,确定设计目标和功能模块。

(2)设计数字信号处理器电路,包括算术运算单元、控制单元和存储单元等。

(3)使用仿真软件进行测试,验证电路能否实现基本算术运算。

四、实验结果与分析1. 组合逻辑电路设计实验结果:通过仿真测试,四位加法器电路功能正常,能够实现两个四位二进制数的加法运算。

分析:在设计过程中,遵循了组合逻辑电路设计的基本原则,确保了电路的正确性。

2. 时序逻辑电路设计实验结果:通过仿真测试,计数器电路功能正常,能够实现从0到9的计数功能。

分析:在设计过程中,正确描述了状态转移图,并使用Verilog语言实现了电路的功能。

数字逻辑实验报告-Verilog时序逻辑设计

数字逻辑实验报告-Verilog时序逻辑设计
源码如下
上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述
五、实验器材(设备、元器件):
PC机、Windows XP、Anvyl或Nexys3开发板、Xilinx ISE 14.7开发工具、Digilent Adept下载工具。
六、实验步骤:
实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。
七、关键源代码及波形图:
1.D触发器的Verilog代码
源码如下
仿真结果如下图所示
检查输入输出关系,设计无误。
2.4位通用移位寄存器74x194
源码如下:
仿真计无误。
3.3位LFSR计数器
源码如下:
仿真结果如下图所示
检验输入输出结果正常,设计无误。
4.74x163计数器
设计同步计数器74x163。
三、实验内容:
1.设计边沿D触发器74x74。
2.设计通用移位寄存器74x194。
3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。
4.设计4位同步计数器74x163。
四、实验原理:
74x74逻辑电路图
74x194逻辑电路图
3位LFSR逻辑电路图
74x163逻辑电路图
电子科技大学
实验报告
学生姓名:任彦璟学号:2015040101018指导教师:吉家成米源王华
一、实验项目名称:Verilog时序逻辑设计
二、实验目的:
掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。
设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。

FPGA——Verilog时序电路实验报告

FPGA——Verilog时序电路实验报告

Verilog设计实验报告唐睿电子工程2011301200062武汉大学电工电子实验教学示范中心集成电路设计实验实验报告:学院:电子信息学院专业:电子信息工程2014 年 5 月7 日实验名称时序逻辑电路基础指导教师曹华伟姓名唐睿年级2011级学号2011301200062 成绩一、预习部分1.实验目的(预期成果)2.实验基本原理(概要)3.主要仪器设备(实验条件,含必要的元器件、工具)1).实验目的1.掌握时序逻辑电路的实现方法;2.了解时序电路的仿真与测试;3.熟悉并理解硬件描述语言;4.用硬件描述语言实现基本时序电路基础的电路;5.在DE2-115开发板中验证并测试其时序逻辑电路功能是否实现。

2).实验基本原理1. D触发器工作原理:SD 和RD 接至基本RS 触发器的输入端,它们分别是预置和清零端,低电平有效。

当SD=1且RD=0时(SD的非为0,RD的非为1,即在两个控制端口分别从外部输入的电平值,原因是低电平有效),不论输入端D为何种状态,都会使Q=1,Q非=0,即触发器置1;当SD=0且RD=1(SD的非为1,RD的非为0)时,Q=0,Q非=1,触发器置0,SD和RD通常又称为直接置1和置0端。

我们设它们均已加入了高电平,不影响电路的工作。

2. 时序逻辑电路(Sequential Logic Circuit)输出不仅取决于当前输入信号,而且取决于电路之前所处的状态。

基本的时序电路单元有触发器(D、JK、T 等触发器)、锁存器、计数器等。

3. VHDL 中,主要程序分析,时序电路通过process(clk)和if clk’event and clk = ‘1’then 边沿检测语句实现触发器风格的电路;具有非完分支的if、case 语句形成锁存器电路。

例如:process(clk)begin ――D 触发器if (clk’event and clk = ‘1’) thenq <= d; end if;end process;process(g,d) begin ――锁存器if g=1 then q <= d; end if;end process;Verilog HDL 中,时序电路通过always 块语句和@(posedge clk)或@(negedge clk)边沿条件方式实现,例如:always @(posedge clk) //二分频器begin if (! Rst) clk_out = 0;else clk_out =~clk_out; end3. 实验设备与软件平台D E2-115实验板,Q u a r tu s I I v5.0,微型计算机,。

Verilog 实验报告

Verilog 实验报告

练习三利用条件语句实现计数分频时序电路实验目的:1.掌握条件语句在简单时序模块设计中的使用;2.学习在Verilog模块中应用计数器;3.学习测试模块的编写、综合和不同层次的仿真。

实验理论:实验用到Verilog HDL提供的条件语句供分支判断,以描述较复杂的时序关系。

在可综合风格的Verilog HDL模型中,常用的条件语句有if-else和case-endcase两种结构。

两者相比,if-else 用于不是很复杂的分支关系,实际编写可综合风格的模块,特别是用状态机构成的模块时,更常用的是case-endcase风格的代码。

在多重if 嵌套语句中,else 与前面最近的if 相对应(即与前面最近的if 组成一对if-else 语句。

为确保程序的可读性和语句的对应性,请使用begin…end 块语句。

下面给出的范例也是一个可综合风格的分频器,可将10MB的时钟分频为500KB的时钟。

基本原理与1/2分频器是一样的,但是需要定义一个计数器,对于实现占空比为1:1分频,首先进行上升沿触发进行模J计数,计数从零开始,到19进行输出时钟翻转,然后经过19再次进行翻转得到一个占空比非1:1分频时钟。

再者同时进行下降沿触发的模19计数,到和上升沿过19时,输出时钟再次翻转生成占空比非1:1分频时钟。

两个占空比非1:1分频时钟相或运算,得到占空比为1:1分频时钟。

以准确获得1/20分频。

Verilog模块结构完全嵌在module和endmodule声明语句之间;每个Verilog程序包括四个主要部分:端口定义、I/O说明、内部信号声明、功能定义。

模块源代码://------------------ fdivision.v-------------------//module fdivision(RESET,F10MB,F500KB);input F10MB,RESET; output F500KB; //输出为500KB的输出端reg F500KB; //定义一位寄存器reg [7:0]j; //定义数据宽为8的计数寄存器jalways @(posedge F10MB)if(! RESET) //当RESET无效时,对输出端和计数器初始化beginF500KB<=0;j<=0;endelsebeginif(j==19) //当j=19时,将时钟翻转,并将计数器清零beginj<=0;F500KB=~F500KB;endelsej<=j+1; //当j不等于19时使j加1endendmodule测试模块常见的形式:module t;reg …; //被测模块输入/输出变量类型定义wire…; //被测模块输入/输出变量类型定义initial begin …; …; …; end … …//产生测试信号always #delay begin …; end … …//产生测试信号Testedmd m(.in1(ina), .in2(inb), .out1(outa), .out2(outb) );//被测模块的实例引用initial begin ….; ….; …. end //记录输出和响应endmodule测试模块源代码:`timescale 1ns/100ps`define clk_cycle 50module division_Top;reg F10MB,RESET;wire F500KB_clk;always #`clk_cycle F10MB=~F10MB;initialbeginRESET=1;F10MB=0;#100 RESET=0;#100 RESET=1;#10000 $stop;endfdivision fdivision (.RESET(RESET),.F10MB(F10MB),.F500KB(F500_clk));endmodule仿真结果:练习:利用10MB的时钟,设计一个单周期形状的周期波形。

verilog课程设计实验报告

verilog课程设计实验报告

verilog课程设计实验报告一、教学目标本课程旨在通过Verilog硬件描述语言的学习,让学生掌握数字电路设计的自动化工具,理解并实践硬件描述语言在数字系统设计中的应用。

通过本课程的学习,学生应达到以下目标:1.知识目标:–理解Verilog的基本语法和结构。

–掌握Verilog中的模块化设计方法。

–学习常用的Verilog描述技巧,包括逻辑门级建模、行为级建模和结构级建模。

2.技能目标:–能够运用Verilog语言进行简单的数字电路设计。

–学会使用至少一种Verilog仿真工具进行电路功能验证。

–能够阅读和理解Verilog代码,进行简单的代码优化。

3.情感态度价值观目标:–培养学生的团队合作意识,在实验报告中能够体现分工合作的精神。

–培养学生的问题解决能力,鼓励学生在遇到问题时积极寻找解决方案。

–培养学生对新技术的好奇心和学习兴趣,激发他们对电子工程领域的热爱。

二、教学内容依据教学目标,本课程的教学内容将围绕Verilog语言的基础知识、实践应用和项目设计展开。

教学大纲安排如下:1.第一部分:Verilog基础知识(2周)–介绍Verilog的背景和基本概念。

–详细讲解Verilog的数据类型、运算符和语句。

2.第二部分:模块化设计(2周)–讲解模块的定义和封装。

–实践模块的端口声明和模块实例化。

3.第三部分:数字电路的Verilog描述(2周)–通过实例教学,掌握逻辑门、触发器等基本组件的Verilog建模。

–学习组合逻辑和时序逻辑的设计方法。

4.第四部分:仿真与测试(1周)–学习使用仿真工具进行电路功能验证。

–理解并实践测试台(testbench)的编写。

5.第五部分:项目设计(3周)–小组合作完成一个较为复杂的数字系统设计项目。

–包括系统模块的划分、编码、仿真和测试。

三、教学方法为了提高学生的学习效果,将采用多种教学方法相结合的方式进行授课:1.讲授法:用于讲解Verilog的基本概念和语法。

数字逻辑实验报告-Verilog时序逻辑设计

数字逻辑实验报告-Verilog时序逻辑设计

电子科技大学实验报告学生姓名:任彦璟学号:2015040101018 指导教师:吉家成米源王华一、实验项目名称:Verilog时序逻辑设计二、实验目的:掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。

设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。

设计同步计数器74x163 。

三、实验内容:1.设计边沿D触发器74x74。

2.设计通用移位寄存器74x194。

3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。

4.设计4位同步计数器74x163。

四、实验原理:74x74逻辑电路图CLK_D CLR_L_DS1_LS1_H S0_LS0_Hw1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20 74x194逻辑电路图3位LFSR逻辑电路图74x163逻辑电路图上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述五、实验器材(设备、元器件):PC 机、Windows XP 、Anvyl 或Nexys3开发板、Xilinx ISE 14.7开发工具、Digilent Adept 下载工具。

六、实验步骤:实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。

七、关键源代码及波形图:1.D 触发器的Verilog 代码 源码如下module vr74x74(CLK, D, PR_L, CLR_L, Q, QN);input CLK, D, PR_L, CLR_L ;output Q, QN ;wire w1, w2, w3, w4 ;nand (w1, PR_L, w2, w4);nand (w2, CLR_L, w1, CLK) ; nand (w3, w2, CLK, w4) ;仿真结果如下图所示检查输入输出关系,设计无误。

数字逻辑实验报告-Verilog时序逻辑设计

数字逻辑实验报告-Verilog时序逻辑设计
电 子 科 技 大 学
实 验 报 告
学生姓名:任彦璟学 号:2015040101018指导教师:吉家成 米源 王华
一、实验项目名称:Verilog时序逻辑设计
二、实验目的:
掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。
设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。
源码如下
七、关键源代码及波形图:
1.D触发器的Verilog代码
源码如下
仿真结果如下图所示
检查输入输出关系,设计无误。
2.4位通用移位寄存器74x194
源码如下:
仿真结果如下图所示
检验输入输出结果正常,设计无误。
3.3位出结果正常,设计无误。
4.74x163计数器
上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述
五、实验器材(设备、元器件):
PC机、Windows XP、Anvyl或Nexys3开发板、Xilinx ISE 14.7开发工具、Digilent Adept下载工具。
六、实验步骤:
实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。
设计同步计数器74x163。
三、实验内容:
1.设计边沿D触发器74x74。
2.设计通用移位寄存器74x194。
3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。
4.设计4位同步计数器74x163。
四、实验原理:
74x74逻辑电路图

verilog时序逻辑和组合逻辑

verilog时序逻辑和组合逻辑

verilog时序逻辑和组合逻辑
摘要:
1.组合逻辑简介
2.时序逻辑简介
3.组合逻辑与时序逻辑的区别
4.实例分析
5.总结
正文:
【1】组合逻辑简介
组合逻辑是数字电路设计中的基础部分,它主要研究如何使用布尔代数和逻辑门来实现数字逻辑电路。

组合逻辑电路的特点是,其输出仅依赖于当前时刻的输入,而与之前的输入状态无关。

简而言之,组合逻辑电路不需要考虑时间因素,只需关注输入与输出之间的关系。

【2】时序逻辑简介
时序逻辑是数字电路设计的另一个重要分支,它主要研究如何在电路中处理带有时间约束的逻辑问题。

时序逻辑电路的输出不仅依赖于当前时刻的输入,还与之前时刻的输入状态有关。

这使得时序逻辑电路的设计相比组合逻辑电路更为复杂。

【3】组合逻辑与时序逻辑的区别
组合逻辑和时序逻辑的主要区别在于对时间因素的处理。

组合逻辑不考虑输入信号的历史状态,而时序逻辑关注输入信号的历史状态对电路输出的影
响。

此外,组合逻辑电路的设计相对简单,而时序逻辑电路的设计则更为复杂。

【4】实例分析
以一个简单的触发器为例,触发器的输入信号为A、B,输出信号为Q。

在没有考虑时序约束的情况下,可以使用组合逻辑实现触发器。

但当需要满足一定的时间约束(如设置潜伏期和建立时间)时,组合逻辑无法满足要求,必须采用时序逻辑设计。

【5】总结
总之,组合逻辑和时序逻辑在数字电路设计中具有不同的应用场景。

组合逻辑适用于简单数字电路设计,关注输入与输出之间的关系;而时序逻辑适用于复杂数字电路设计,需要考虑时间约束。

Verilog实验报告实验报告格式要求

Verilog实验报告实验报告格式要求

实验报告格式要求一、实验报告内容包括:(1)实验名称。

(2)实验目的。

(3)实验仪器及编号。

写明仪器名称、型号、编号。

(4)实验原理。

简单表达有关实验原理(包括电路图或光路图或实验装置示用意)及测量中依据的的公式,式中各量的物理含义及单位,公式成立所应知足的实验条件等。

(5)实验内容及步骤。

依如实验内容及实际的实验进程写明关键步骤和平安注意要点。

(6)实验观测记录。

记录原始测量数据、图形等有关原始量,形式上要求整齐标准。

(7)数据处置结果。

依如实验要求,采纳适合的方式进行数据处置,误差分析,最后写出实际结果。

(8)小结或讨论。

内容不限。

能够是实验中的现象分析,对实验关键问题的体会,实验的收成和建议,也可解答试探题。

二、书写顺序(1)到(5)是进行实验预习时就应该完成的。

(6)在实验中完成。

做完实验后再在预习报告基础上完成(7)(8)两项。

完成一个实验,确实是一次最大体的科研训练,从预习到写出一个实验报告,每一步都有极为丰硕的学习内容,要踊跃试探,认真对待。

实验(一)简单的组合逻辑设计实验日期 2021-10-31 同组者姓名一、实验目的[1] 把握大体组合逻辑电路的实现方式[2] 初步了解两种大体组合逻辑电路的生成方式[3] 学习测试模块的编写[4] 通过综合和布局布线了解不同层次仿真的物理意义二、实验仪器运算机、FPGA开发板三、实验内容[1] 在ISE软件环境中进行一次完整的设计流程,并在FPGA开发板上实现与门的功能。

[2] 完成一个可综合的数据比较器的程序。

[3] 完成数据比较器的测试模块。

[4] 发挥部份:设计一个多位(2位)的数据比较器并在FPGA开发板上实现该比较器。

四、实验步骤、分析及结果(在下面写出你的代码)代码:module compare(input a,input b,output c);assign c=a&b;endmodule结果如下图:拓展代码如下:module compare( Y ,A ,B ); input [1:0] A ;input [1:0] B ;output reg [1:0] Y ;always @ (A or B )beginif ( A > B )Y <= 3'b01; else if ( A == B) Y <= 3'b10; elseY <= 3'b11; endendmodule结果如下:指导师(签名)时刻实验(二)简单分频时许逻辑电路的设计实验日期 2021-11-7 同组者姓名一、实验目的[1] 把握最大体时序电路的实现方式。

实验五时序逻辑电路实验报告

实验五时序逻辑电路实验报告

实验五时序逻辑电路实验报告一、实验目的1.了解时序逻辑电路的基本原理和设计方法。

2.掌握时序逻辑电路的设计方法。

3.运用Verilog语言进行时序逻辑电路的设计和仿真。

二、实验原理时序逻辑电路是指在电路中引入记忆元件(如触发器、计数器等),通过电路中的时钟信号和输入信号来控制电路的输出。

时序逻辑电路的输出不仅与当前输入有关,还与之前输入和输出的状态有关,因此对于时序逻辑电路的设计,需要考虑时钟信号的频率、输入信号的变化及当前状态之间的关系。

三、实验内容本次实验通过使用Verilog语言设计和仿真下列时序逻辑电路。

1.设计一个10进制累加器模块,实现对输入信号进行累加并输出,并在仿真中验证结果的正确性。

2.设计一个4位二进制计数器模块,实现对输入时钟信号的计数,并在仿真中验证结果的正确性。

3.设计一个4位带加载/清零控制功能的二进制计数器模块,实现对输入时钟信号的计数,并在仿真中验证结果的正确性。

四、实验步骤1.根据实验原理和要求,利用Verilog语言设计10进制累加器模块。

在设计中需要注意时钟的频率和输入信号的变化。

2.编译并运行仿真程序,验证设计的10进制累加器模块的正确性。

3.在设计时钟频率和输入信号变化的基础上,设计4位二进制计数器模块。

4.编译并运行仿真程序,验证设计的4位二进制计数器模块的正确性。

5.在设计4位二进制计数器模块的基础上,引入加载/清零控制功能,设计一个4位带加载/清零控制功能的二进制计数器模块。

6.编译并运行仿真程序,验证设计的带加载/清零控制功能的二进制计数器模块的正确性。

7.总结实验结果,撰写实验报告。

五、实验结果与分析1.经过验证实验,10进制累加器模块能够正确实现对输入信号的累加并输出正确的结果。

2.经过验证实验,4位二进制计数器模块能够正确实现对输入时钟信号的计数,并输出正确的计数结果。

3.经过验证实验,带加载/清零控制功能的二进制计数器模块能够正确实现对输入时钟信号的计数,并在加载或清零信号的控制下实现加载或清零操作。

Verilog基本电路设计逻辑仿真实验报告

Verilog基本电路设计逻辑仿真实验报告

实验报告1、基本门电路一、实验目的1、了解基于Verilog的基本门电路的设计及其验证。

2、熟悉利用EDA工具进行设计及仿真的流程。

3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86进行VerilogHDL设计的方法。

二、实验环境Libero仿真软件。

三、实验内容1、掌握Libero软件的使用方法。

2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。

3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。

4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86)的综合结果,以及相应的仿真结果。

(任选一个....四、实验结果和数据处理1、所有模块及测试平台代码清单..//74HC00代码-与非// HC00.vmodule HC00(A,B,Y);input [4:1]A,B;output [4:1]Y;assign Y=~(A&B);endmodule//74HC00测试平台代码// test.v`timescale 1ns/1nsmodule test1();reg [4:1]a,b;wire [4:1]y;HC00 u1(a,b,y);initialbegina=4'b0000; b=4'b0001;#10 b=b<<1;#10 b=b<<1;#10 b=b<<1;a=4'b1111; b=4'b0001; #10 b=b<<1;#10 b=b<<1;#10 b=b<<1;endendmodule//74HC02代码-或非// HC02.vmodule HC02(A,B,Y); input [4:1]A,B;output [4:1]Y;assign Y=~(A|B); endmodule//74HC02测试平台代码// test.v`timescale 1ns/1ns module test2();reg [4:1]a,b;wire [4:1]y;HC02 u2(a,b,y);initialbegina=4'b0000; b=4'b0001; #10 b=b<<1;#10 b=b<<1;#10 b=b<<1;a=4'b1111; b=4'b0001; #10 b=b<<1;#10 b=b<<1;#10 b=b<<1;endendmodule//74HC04代码-非// HC04.vmodule HC04(A,Y); input [6:1]A;output [6:1]Y;assign Y=~A; endmodule//74HC04测试平台代码// test.v`timescale 1ns/1ns module test3();reg [6:1]a;wire [6:1]y;HC04 u3(a,y);initialbegina=4'b000001;#10 a=a<<1;#10 a=a<<1;#10 a=a<<1;#10 a=a<<1;#10 a=a<<1;endendmodule//74HC08代码-与// HC08.vmodule HC08(A,B,Y); input [4:1]A,B; output [4:1]Y; assign Y=A&B;endmodule//74HC08测试平台代码// test.v`timescale 1ns/1ns module test4();reg [4:1]a,b;wire [4:1]y;HC08 u4(a,b,y);initialbegina=4'b0000; b=4'b0001; #10 b=b<<1;#10 b=b<<1;#10 b=b<<1;a=4'b1111; b=4'b0001; #10 b=b<<1;#10 b=b<<1;#10 b=b<<1;endendmodule//74HC32代码-或// HC32.vmodule HC32(A,B,Y); input [4:1]A,B;output [4:1]Y;assign Y=A|B; endmodule//74HC32测试平台代码// test.v`timescale 1ns/1ns module test5();reg [4:1]a,b;wire [4:1]y;HC32 u5(a,b,y);initialbegina=4'b0000; b=4'b0001; #10 b=b<<1;#10 b=b<<1;#10 b=b<<1;a=4'b1111; b=4'b0001; #10 b=b<<1;#10 b=b<<1;endendmodule//74HC86代码-异或// HC86.vmodule HC86(A,B,Y); input [4:1]A,B;output [4:1]Y;assign Y=A^B; endmodule//74HC86测试平台代码// test.v`timescale 1ns/1ns module test6();reg [4:1]a,b;wire [4:1]y;HC86 u6(a,b,y);initialbegina=4'b0000; b=4'b0001; #10 b=b<<1;#10 b=b<<1;a=4'b1111; b=4'b0001;#10 b=b<<1;#10 b=b<<1;#10 b=b<<1;endendmodule2、第一次仿真结果(任选一个门,请注明,插入截图,下同.................)。

数字逻辑实验-Verilog教程

数字逻辑实验-Verilog教程
➢ 每个Verilog HDL源文件中只准有一个顶层模块,其他为子模块。 ➢ 每个模块要进行端口定义,并说明输入输出端口,然后对模块的
功能进行行为逻辑描述。 ➢ 程序书写格式自由,一行可以写几个语句,一个语句也可以分多
行写。 ➢ 除了endmodule语句、begin_end语句和fork_join语句外,每个语
➢ 开关级(switch level): 描述器件中三极管和储存节点
及其之间连接的模型。
5
1 引言
四、Verilog HDL的特点
▪ 语法结构上的主要特点:
➢ 形式化地表示电路的行为和结构; ➢ 借用C语言的结构和语句; ➢ 可在多个层次上对所设计的系统加以描述,语言对设计规
模不加任何限制; ➢ 具有混合建模能力:一个设计中的各子模块可用不同级别
output cout; input [7:0] data;
I/O说明
input load, cin,clk ; reg[7:0] out;
信号类型声明
always @(posedge clk)
begin
if(load) out <= data;
// 同步预置数据 功能描述
else out < = out + 1 + cin; // 加1计数
7
2 Verilog HDL基本结构
一、简单的Verilog HDL例子
[例2.1] 8位全加器
模块名(文件名)
module adder8 ( cout,sum,a,b,cin ); 端口定义
output cout; output [7:0] sum;
// 输出端口声明
I/O说明
input [7:0] a,b;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学实验报告学生姓名:任彦璟学号:2015040101018 指导教师:吉家成米源王华一、实验项目名称:Verilog时序逻辑设计二、实验目的:掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。

设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。

设计同步计数器74x163 。

三、实验内容:1.设计边沿D触发器74x74。

2.设计通用移位寄存器74x194。

3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。

4.设计4位同步计数器74x163。

四、实验原理:74x74逻辑电路图CLK_D CLR_L_DS1_LS1_H S0_LS0_Hw1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20 74x194逻辑电路图3位LFSR逻辑电路图74x163逻辑电路图上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述五、实验器材(设备、元器件):PC 机、Windows XP 、Anvyl 或Nexys3开发板、Xilinx ISE 14.7开发工具、Digilent Adept 下载工具。

六、实验步骤:实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。

七、关键源代码及波形图: 1.D 触发器的Verilog 代码 源码如下module vr74x74(CLK, D, PR_L, CLR_L, Q, QN);input CLK, D, PR_L, CLR_L ;output Q, QN ;wire w1, w2, w3, w4 ;nand (w1, PR_L, w2, w4);nand (w2, CLR_L, w1, CLK) ;nand (w3, w2, CLK, w4) ;nand (w4, CLR_L, w3, D) ;nand (Q, PR_L, w2, QN);nand (QN, Q, w3, CLR_L);endmodule检查输入输出关系,设计无误。

2.4位通用移位寄存器74x194 源码如下:moduleVr74x194(CLK,CLR_L,LIN,RIN,S1,S0,A,B,C,D,Q A,QB,QC,QD);input CLK,CLR_L,LIN,RIN,S1,S0,A,B,C,D ;output QA,QB,QC,QD ;wire CLK_D ;wire CLR_L_D ;wire S1_L,S1_H;wire S0_L,S0_H;wire QAN,QBN,QCN,QDN ;wirew1,w2,w3,w4,w5,w6,w7,w8,w9,w10;wirew11,w12,w13,w14,w15,w16,w17,w18,w19, w20;buf(CLK_D,CLK);buf(CLR_L_D,CLR_L);not(m1,S1);not(m0,S0);and(n1,S0,m1,RIN);and(n2,S0,S1,A);and(n3,m0,m1,QA); and(n5,S0,m1,QA);and(n6,S0,S1,B);and(n7,m0,m1,QB);and(n8,m0,S1,QC);and(n9,S0,m1,QB);and(n10,S0,S1,C);and(n11,m0,m1,QC);and(n12,m0,S1,QD);and(n13,S0,m1,QC);and(n14,S0,S1,D);and(n15,m0,m1,QD);and(n16,m0,S1,LIN);or(p1,n1,n2,n3,n4);or(p2,n5,n6,n7,n8);or(p3,n9,n10,n11,n12);or(p4,n13,n14,n15,n16);vr74x74q1(CLK_D,p1,1'b1,CLR_L_D,QA,QAN);vr74x74q2(CLK_D,p2,1'b1,CLR_L_D,QB,QBN);vr74x74q3(CLK_D,p3,1'b1,CLR_L_D,QC,QCN);vr74x74q4(CLK_D,p4,1'b1,CLR_L_D,QD,QDN); endmodule仿真结果如下图所示检验输入输出结果正常,设计无误。

3.3位LFSR计数器源码如下:module LFSR( CLK,RESET,X2,X1,X0);input CLK,RESET;output X2,X1,X0;wire w1,w3,w6 ;Vr74x194 U1(.CLK(CLK),.CLR_L(1'b1),.RIN(w6),.S1(RESET),.S0(1'b1),.A(1'b1),.B(1'b0),.C(1'b0),.D(1'b0),.QA(X2),.QB(X1) ,.QC(X0));xor (w3,X1,X0) ;nor (w1,X2,X1) ;xor (w6,w1,w3) ;endmodule仿真结果如下图所示检验输入输出结果正常,设计无误。

4. 74x163计数器源码如下 and(w21,w20,w25); not(w26,ENT); nor(w1,LD_L,CLR); nor(w2,w1,CLR); xor(w4,w25,~QN[0]); xor(w10,w9,~QN[1]); xor(w16,w15,~QN[2]); xor(w22,w21,~QN[3]); and(w3,w1,A); and(w5,w2,w4); and(w7,w1,B); and(w11,w2,w10); and(w13,w1,C); and(w17,w2,w16); and(w19,w1,D); and(w23,w2,w22); or(w6,w3,w5); or(w12,w7,w11); or(w18,w13,w17); or(w24,w19,w23); vr74x74 U1 (D[0], CLK, 1, CLR_L, Q[0], QN[0]); vr74x74 U2 (D[1], CLK, 1, CLR_L, Q[1], QN[1]); vr74x74 U3 (D[2], CLK, 1, CLR_L, Q[2], QN[2]); vr74x74 U4 (D[3], CLK, 1, CLR_L, Q[3], QN[3]); endmodulemoduleVr74x163(CLK,CLR_L,LD_L,ENP ,ENT,D,Q,RC O);input CLK,CLR_L,LD_L,ENP ,ENT; input [3:0]D;output [3:0]Q;output RCO;wirew1,w2,w3,w4,w5,w6,w7,w8,w9,w10; wirew11,w12,w13,w14,w15,w16,w17,w18,w19,w20;wire w21,w22,w23,w24,w25,w26;wire CK;wire CLR;wire [3:0]QN;wire CLK1;buf(CLK1,CLK);not(CLR,CLR_L);not(w8,QN[0]);nor(w14,QN[1],QN[0]);nor(w20,QN[2],QN[1],QN[0]); and(w25,ENP ,ENT);and(w9,w8,w25);and(w15,w14,w25);3位LFSR计数器顶层设计模块module lfsr_8_main(input CLK ,input RESET ,output LED2 , LED1 , LED0);wire CLK_1Hz ;counter_100M u1( CLK , CLK_1Hz ) ;LFSR_8 u2(CLK_1Hz , RESET , LED2 , LED1 , LED0 );endmodule仿真结果如下图所示八、实验结论:边沿D触发器负跳沿触发的主从触发器工作时,必须在正跳沿前加入输入信号。

如果在CP 高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。

而边沿触发器允许在CP触发沿来到前一瞬间加入输入信号。

移位寄存器D、2D、1D、0D为并行输入端;3Q、2Q、1Q、0Q为并行输出端;RS为右移串行输入端;LS为左移串行输入端1S、0S为操作模式控制端;RC为直接无条件清零端;CP为时钟脉冲输入端。

74LS194有5种不同操作模式:并行送数寄存;右移(方向由3Q→0Q);左移(方向由0Q→3Q);保持及清零。

对于同步计数器,由于时钟脉冲同时作用于各个触发器,克服了异步触发器所遇到的触发器逐级延迟问题,于是大大提高了计数器工作频率,各级触发器输出相差小,译码时能避免出现尖峰;但是如果同步计数器级数增加,就会使得计数脉冲的负载加重。

九、总结及心得体会:在这此次试验中,根据边沿D触发器74x74的原理图编写设计和仿真模块;根据通用移位寄存器74x194的原理图编写设计和仿真模块;采用1片74x194和其它小规模逻辑门设计3位LFSR计数器,编写设计和仿真了模块;根据4位同步计数器74x163的原理图编写设计和仿真了模块;将输入为100MHz的系统时钟采用7片74x163和其它小规模逻辑门设计了1Hz的数字信号;在FPGA开发板上调试了3位LFSR计数器。

十、对本实验过程及方法、手段的改进建议:无报告评分:指导教师签字:。

相关文档
最新文档