Verilog-带有延迟的RS锁存器-上机实验报告

合集下载

Verilog实验报告(电子)参考模板

Verilog实验报告(电子)参考模板

西安邮电大学Verilog HDL大作业报告书学院名称:电子工程学院学生姓名:专业名称:电子信息工程班级:实验一异或门设计一、实验目的(1)熟悉Modelsim 软件(2)掌握Modelsim 软件的编译、仿真方法(3)熟练运用Modelsim 软件进行HDL 程序设计开发二、实验内容my_or,my_and和my_not门构造一个双输入端的xor门,其功能是计算z=x’y+xy’,其中x和y为输入,z为输出;编写激励模块对x和y的四种输入组合进行测试仿真1、实验要求用Verilog HDL 程序实现一个异或门,Modelism仿真,观察效果。

2、步骤1、建立工程2、添加文件到工程3、编译文件4、查看编译后的设计单元5、将信号加入波形窗口6、运行仿真实验描述如下:module my_and(a_out,a1,a2);output a_out;input a1,a2;wire s1;nand(s1,a1,a2);nand(a_out,s1,1'b1);endmodulemodule my_not(n_out,b);output n_out;input b;nand(n_out,b,1'b1); endmodulemodule my_or(o_out,c1,c2);output o_out;input c1,c2;wire s1,s2;nand(s1,c1,1'b1);nand(s2,c2,1'b1);nand(o_out,s1,s2); endmodulemodule MY_XOR(z,x,y);output z;input x,y;wire a1,a2,n1,n2;my_not STEP01(n1,x);my_not STEP02(n2,y);my_and STEP03(a1,n1,y);my_and STEP04(a2,n2,x);my_or STEP05(z,a1,a2); Endmodulemodule stimulus;reg X,Y;wire OUTPUT;MY_XOR xor01(OUTPUT,X,Y);initialbegin$monitor($time,"X=%b,Y=%b --- OUTPUT=%b\n",X,Y,OUTPUT);endinitialbeginX = 1'b0; Y = 1'b0;#5 X = 1'b1; Y = 1'b0;#5 X = 1'b1; Y = 1'b1;#5 X = 1'b0; Y = 1'b1;endendmodule二、实验结果波形图:三、分析和心得通过这次的实验,我基本熟悉Modelsim 软件,掌握了Modelsim 软件的编译、仿真方法。

Verilog HDL数字设计与综合(第二版) 第五章课后习题答案

Verilog HDL数字设计与综合(第二版) 第五章课后习题答案

1.利用双输入端的nand门,用Verilog编写自己的双输入端的与门、或门和非门,把它们分别命名为my_or,my_and和my_not,并通过激励模块验证这些门的功能。

答:`timescale 1ns/1ns/**************************** ********** my_and *********** ****************************/ module my_and(in1,in2,out); input in1,in2;output out;wire out1;nand a1(out,out1,out1);nand a2(out1,in1,in2); endmodule/**************************** ********** my_or ************ ****************************/ module my_or(in1,in2,out);input in1,in2;output out;wire out1,out2;nand o1(out,out1,out2);nand o2(out1,in1,in1);nand o3(out2,in2,in2); endmodule/**************************** ********** my_not *********** ****************************/ module my_not(in,out);input in;output out;nand n1(out,in,in);endmodule/**************************** ********** test ***************************************/module test;reg a,b;wire and_c,or_c,not_c;initialbegina<=0;b<=0;#10 a<=0;b<=1;#10 a<=1;b<=0;#10 a<=1;b<=1;#10 $stop;endmy_and myand1(a,b,and_c);my_or myor1(a,b,or_c);my_not mynot1(a,not_c); endmodule2.使用上题中完成的my_or,my_and和my_not门构造一个双输入端的xor门,其功能是计算z第5章门级建模41= x’y + x y’,其中x和y为输入,z为输出;编写激励模块对x和y的四种输入组合进行测试仿真。

verilog实验报告

verilog实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Verilog实验报告

Verilog实验报告

Verilog实验报告实验一简单组合逻辑电路的设计一实验要求1.用verilog HDL语言描写出简单的一位数据比较器及其测试程序;2.用测试程序对比较器进行波形仿真测试;画出仿真波形;3.总结实验步骤和实验结果。

二实验原理与内容4.这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。

在Verilog HDL中,描述组合逻辑时常使用assign结构。

注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。

5.模块源代码测试模块:6.波形图:四结实验步骤和实验结果由图可看出,每当输入的电位值不同时输出为0,这与实验要求一致,相同时输出为1,故此程序是可行的。

实验三在verilog HDL中使用函数一实验要求1.掌握函数在模块中的使用2.用测试程序进行波形仿真测试;画出仿真波形3.总结实验步骤和实验结果二实验原理与内容与一般的程序设计语言一样;verilog HDL也可以使用函数已是应对不同变量采取同一运算的操作。

verilog HDL函数在综合时被理解成具有独立运算功能的电路,每调用一次函数相当于改变这部分电路的输入以得到相应的计算结果。

模块源代码:module ex3(clk,n,result,reset);output[31:0] result;input[3:0] n;input reset,clk;reg[31:0] result;always @(posedge clk)beginif(!reset)result <= 0;elsebeginresult <= n*factorial(n)/((n*2)+1);endendfunction[31:0] factorial;input[3:0] operand;reg[3:0] index;beginfactorial = operand ? 1:0;for(index = 2;index <= operand;index = index+1) factorial = index*factorial;endendfunctionendmodule`timescale 1ns/100ps`define clk_cycle 50module ex3_t();reg[3:0] n,i;reg reset,clk;wire[31:0] result;initialbeginn=0;reset=1;clk=0;#100 reset=0;#100 reset = 1;for(i=0;i <= 15;i=i+1)begin#200 n=i;end#100 $stop;endalways #`clk_cycle clk =~ clk;ex3 ex30(.clk(clk),.n(n),.result(result),.reset(reset)); always @(negedge clk)$display("at n=%d,result=%d",n,result);endmodule波形图:实验四在verilog HDL中使用任务一实验要求1.掌握任务在结构化verilog HDL设计中的应用2.用测试程序进行波形仿真测试;画出仿真波形3.总结实验步骤和实验结果二实验原理与内容仅有函数并不能满足verilog HDL中的运算需求。

VerilogRS232串口模块实验报告范文

VerilogRS232串口模块实验报告范文

VerilogRS232串口模块实验报告范文1设计概述实验功能:实现RS232的双工通信。

实验环境:1)硬件环境:PC机一台、ml507PFGA开发套件;2)软件环境:开发软件ISE14.5、代码编写软件Notepad++、仿真软件Modelim、调试软件chipcope、串口调试工具。

2设计原理2.1串行接口RS232工作原理串口用来连接FPGA和PC机,RS-232允许全双工通信,即计算机在接收数据的同时可以发送数据。

串口按位(bit)发送和接收字节。

通常以8位数据为1组,先发送最低有效位,最后发送最高有效位。

尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

通信使用3根线完成:(1)地线,(2)发送,(3)接收。

由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手,但不是必须的。

数据的传输没有时钟信号,接收端必须采取某种方式,使之与接收数据同步。

1)串行线缆的两端先约定好串行传输的参数(传输速度、传输格式等);2)当没有数据传输的时候,发送端向数据线上发送"1";3)每传输一个字节之前,发送端先发送一个"0"来表示传输已经开始,这样接收端便可以知道有数据到来了;图1数据帧结构4)开始传输后,数据以约定的速度和格式传输,所以接收端可以与之同步;5)在串口总线上高电平是默认的状态,当一帧数据开始传输必须先拉低电平,这就是起始位,起始位之后是8位数据位,最后是校验位和停止位(可不加校验位)。

传输完成一个字节之后,都在其后发送一个停止位("1")。

(图1)2.2波特率发生器波特率是串口传输的传输速度;在微观上就是一个位的周期。

常用的波特率有9600bp和115200bp。

“9600bp”表示每秒可以传输9600位。

本次实验我所选用的传输速率为9600bp。

由于我们的FPGA通常运行在远高于9600Hz的频率上(100MHz),因此需要分频产生接近9600Hz的时钟信号。

verilog实验报告 - 程超

verilog实验报告 - 程超

西安邮电學院基于Verilog的数字电路模拟实验系部名称:通信与信息工程学院学生姓名:张宏扬专业名称:通信工程班级:通工0809学号:03081469(01)时间:2010年12月20号实验题目门级建模仿真实验一、实验内容设计的一个带有清零的顺序输出结果的计数器,q从0计数到15二、技术规范1、输入引脚:reset,clk;输出引脚:q。

2、功能:这时也个具有清零的计数器,从0到15输出的。

在其中用到了T触发器和D触发器来实现它的功能。

三、实验步骤1、在modulesim软件中对设计模块和验证模块进行书写和编译;2、对编译好的模块进行仿真。

四、源代码://脉动进位计数器顶层模块module ripple_carry_counter(q,clk,reset);output [3:0]q;input clk,reset;//生成了4个T触发器(T_FF)的实例,每个都有自己的名字T_FF tff0(q[0],clk,reset);T_FF tff1(q[1],q[0],reset);T_FF tff2(q[2],q[1],reset);T_FF tff3(q[3],q[2],reset);endmodule//触发器T_FFmodule T_FF(q,clk,reset);output q;input clk,reset;wire d;D_FF dff0(q,d,clk,reset);not 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<= 1'b0;elseq<= d;endmodulemodule stimulus;reg clk;reg reset;wire [3:0]q;//引用已经设计好的模块实例ripple_carry_counter r1(q,clk,reset);//控制驱动设计块的时钟信号,时钟周期为10个时间单位initialclk = 1'b0; //把clk设置为0always#5 clk = ~clk; //每5个时间单位时钟翻转一次//控制驱动设计块的reset信号initialbeginreset = 1'b1;#15 reset = 1'b0;#180 reset = 1'b1;#10 reset = 1'b0;#20 $finish; //终止仿真end//监视输出initial$monitor($time, "Output q = %d",q);endmodule五、仿真结果及分析实验题目 RS锁存器一、实验内容带有延迟的RS锁存器,写出其带有延迟的Verilog门级描述。

Verilog HDL 数字设计与综合 夏宇闻 课后习题答案 章

Verilog HDL 数字设计与综合 夏宇闻 课后习题答案 章
答:module MEM; endmodule
module SC; endmodule
module Xbar; endmodule
module IS; MEM mem1; SC sc1; Xbar xbar1; endmodule
module TOP; IS is1; endmodule
2.一个四位脉动进位加法器由 4 个一位全加器组成。 a.定义模块 FA。不需要定义模块内容和端口列表。 b.定义模块 Ripple_Add,不需要定义模块内容和端口列表。在模块中调用 4 个 FA 类型的全 加器,把它们分别命名为 fa0,fa1,fa2 和 fa3。
数 3;
c.一个名为 count 的整数;
d.一个名为 snap_shot 的时间变量;
e.一个名为 delays 的数组,该数组中包含 20 个 integer 类型的元素;
f.含有 256 个字的存储器 MEM,每个字的字长为 64 位;
g.一个值为 512 的参数 cache_size。
答:定义如下:
endmodule
module test52; reg x,y; wire z;
initial beຫໍສະໝຸດ inx<=0;y<=0; #10 x<=0;y<=1; #10 x<=1;y<=0; #10 x<=1;y<=1; #10 $stop; end
my_xor myxor(x,y,z);
endmodule
a.system1 b.1reg c.$latch d.exec$
42
Verilog HDL 数字设计与综合(第二版)
答:a 是合法的;b、c 不能以 1 和$开头;d 是合法的。

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有限状态机实验报告(附源代码)

verilog有限状态机实验报告(附源代码)

有限状态机实验报告一、实验目的●进一步学习时序逻辑电路●了解有限状态机的工作原理●学会使用“三段式”有限状态机设计电路●掌握按键去抖动、信号取边沿等处理技巧二、实验内容用三段式有限状态机实现序列检测功能电路a)按从高位到低位逐位串行输入一个序列,输入用拨动开关实现。

b)每当检测到序列“1101”(不重叠)时,LED指示灯亮,否则灭,例如i.输入:1 1 0 1 1 0 1 1 0 1ii.输出:0 0 0 1 0 0 0 0 0 1c)用八段数码管显示最后输入的四个数,每输入一个数,数码管变化一次d)按键按下的瞬间将拨动开关状态锁存i.注意防抖动(按键按下瞬间可能会有多次的电平跳变)三、实验结果1.Rst_n为0时数码管显示0000,led灯不亮,rst_n拨为1,可以开始输入,将输入的开关拨到1,按下按钮,数码管示数变为0001,之后一次类推分别输入1,0,1,按下按钮后,数码管为1101,LED灯亮,再输入1,LED灯灭,之后再输入0,1(即共输入1101101使1101重叠,第二次LED灯不亮),之后单独输入1101,LED灯亮2.仿真图像刚启动时使用rst_n一段时间后其中Y代表输出,即控制led灯的信号,sel表示数码管的选择信号,seg表示数码管信号四、实验分析1、实验基本结构其中状态机部分使用三段式结构:2、整体结构为:建立一下模块:Anti_dither.v输入按键信号和时钟信号,输出去除抖动的按键信号生成的脉冲信号op这一模块实现思路是利用按钮按下时会持续10ms以上而上下抖动时接触时间不超过10ms来给向下接触的时间计时,达到上限时间才产生输出。

Num.v输入op和序列输入信号A,时钟信号clk和复位信号,复位信号将num置零,否则若收到脉冲信号则将num左移一位并将输入存进最后一位。

输出的num即为即将在数码管上显示的值Scan.v输入时钟信号,对其降频以产生1ms一次的扫描信号。

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课程设计实验报告

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实验

实验二:组合逻辑电路设计一、实验目的:学习组合逻辑电路,学习译码器的功能与定义,学习Verilog语言。

二、实验内容:编写3-8译码器的Verilog 代码并仿真,编译下载验证。

三、实验环境PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开发环境、AR1000核心板、SOPC-MBoard板、ByteBlaster II 下载电缆。

四、实验原理译码是编码的逆过程,它的功能是将特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路成为译码器。

译码器可分为两种类型,一种是将一系列代码转换成与之一一对应得有效信号。

这种译码器可以称为唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码换成一个有效信号,从而选中对应的单元。

另一种是将一种代码转换成另一种代码,所以也称为代码变换器。

五、实验过程1.代码2.编译成功3.波形simulation4.仿真波形图实验三:时序逻辑电路设计(一)一、实验目的:学习时序逻辑电路,学习计数器的原理,学习Verilog。

二、实验内容:编写一个带预置输入,清零输入,可加/可减计数器的Verilog 代码并仿真。

三、实验环境PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开发环境。

四、实验原理计数器是数字系统中用的较多的基本逻辑器件。

它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时等功能。

计数器的种类很多。

按脉冲方式可以分为同步计数器和异步计数器;按进制可以分为二进制计数器和非二进制计数器;按计数过程数字的增减,可分为加计数器、减计数器和可逆计数器。

本实验就是设计一个4位二进制加减法计数器,该计数器可以通过一个控制信号决定计数器时加计数还是减计数,另外,该寄存器还有一个清零输入,低电平有效。

还有一个load装载数据的信号输入,用于预置数据;还有一个C的输出,用于计数器的级联。

北航verilog实验报告(全)

北航verilog实验报告(全)

目录实验一 (2)实验二 (8)实验三 (14)实验四 (27)实验一实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、简单时序逻辑电路设计,不要求掌握综合和综合后仿真。

实验内容:必做实验:练习一、简单的组合逻辑设计练习二、简单分频时序逻辑电路的设计选做实验:选做一、练习一的练习题选做二、7段数码管译码电路练习一、简单的组合逻辑设计描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。

实验代码:模块源代码:module compare(equal,a,b);input a,b;output equal;assign equal=(a==b)?1:0;endmodule测试模块源代码:`timescale 1ns/1ns`include "./compare.v"module t;reg a,b;wire equal;initialbegina=0;b=0;#100 a=0;b=1;#100 a=1;b=1;#100 a=1;b=0;#100 a=0;b=0;#100 $stop;endcompare m(.equal(equal),.a(a),.b(b));endmodule实验波形练习二、简单分频时序逻辑电路的设计用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。

实验代码:模块源代码:module halfclk(reset,clkin,clkout);input clkin,reset;output clkout;reg clkout;always@(posedge clkin)beginif(!reset) clkout=0;else clkout=~clkout;endendmodule测试模块源代码:`timescale 1ns/100ps`define clkcycle 50module tt;reg clkin,reset;wire clkout;always#`clkcycle clkin=~clkin;initialbeginclkin=0;reset=1;#10 reset=0;#110 reset=1;#100000 $stop;endhalfclk m0(.reset(reset),.clkin(clkin),.clkout(clkout));endmodule练习题1:设计一个字节(8位)的比较器。

VerilogHDL基础实验可编程实验报告

VerilogHDL基础实验可编程实验报告

可编程逻辑器件设计实验报告实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间: 2014 年 06 月 19 日地点: 803实验室学生姓名:学号:实验名称:简单D触发器实验一简单D触发器1、实验步骤(1)创建工程启动New Project Wizard,创建一个工程。

(2)创建文件选择菜单File—>New—>Verilog HDL File,创建一个Verilog HDL文件,在Verilog HDL文件中编写能够完成实验功能的Verilog HDL代码。

(3)编译工程选择菜单Processing —>Start Compilation,或者单击按钮。

(4)观察RTL视图选择菜单Tools—>Netlist Viewers—>RTL Viewer即可生成RTL视图。

(5)仿真1).创建VWF文件选择菜单File—>New—>Vector Waveform File2). 设定“End Time”选择菜单Edit File—> End Time,在弹出的对话框中将Time设置为20us。

3).在VWF文件中输入信号节点选择菜单View—>Utility Windows—>Node Finder,在出现的对话框中将Filter框中设置为Pins:all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。

4).编辑输入信号波形5).观察仿真结果选择菜单Processing—>Start Simulation,或者单击按钮,观察输出波形。

2. VerilogHDL代码module _DFF (clk,d,q);input clk,d;output q;reg q;always@ (posedge clk)beginq<=d;endendmodule3. RTL 视图4.仿真波形实验二同步置数的D触发器1.实验步骤(1)创建工程启动New Project Wizard,创建一个工程。

深圳大学Verilog实验三状态机实验报告

深圳大学Verilog实验三状态机实验报告
always #10clk=~clk;
always@(posedgeclk)
data={data[22:0],data[23]};
initial begin
clk= 0;
rst= 1;
#2rst=0;
#30rst=1;
data='b0111_1111_1111_0011_0011;
#500 $stop;
regclk;
regrst;
wire x, z;
wire [3:0] count;
wire [2:0] state;
reg[23:0] data;
zuangtaijiuut(
.x(x),
.z(z),
.count(count),
.clk(clk),
.rst(rst),
.state(state)
);
assign x=data[23];
begin state<=BG;count<=0; end
else
case(state)
BG: if(x==1)
begin state<=A; count<=count+1; end
else
begin state<=BG; count<=0; end
A : if(x==1)
begin state<=B; count<=count+1; end
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
end
endmodule
—————————————————————————————————
4、保存代码,仿真,并查看仿真结果。
四、实验结果:

FPGA RS锁存器报告

FPGA RS锁存器报告

一、实验原理在数字系统中,为了协调各部分的工作状态,常常要求某些锁存器在同一时刻动作,这样输出状态受输入信号直接控制的基本锁存器就不适用了。

为此,必须引入同步信号,使这些锁存器只有在同步信号到达时才按输入信号改变状态。

由同步信号控制的锁存器称为同步锁存器或钟控锁存器,同步信号也叫做时钟信号,用CP表示。

常见的钟控锁存器有钟控RS锁存器和锁控D锁存器等。

二、实验目的(1)熟悉ISE9.1的开发环境,掌握工程的生成方法。

(2)熟悉XUPV2Pro实验环境。

(3)了解Verilog HDL语言在FPGA中的使用。

(4)通过锁存器的设计实验了解数字电路设计。

三、实验内容(1)用Verilog语言设计锁存器。

(2)RS锁存器二的实现,D锁存器的实现。

(3)使用ChipScope-Pro生成ILA/ICON核,在线观测调试。

四、(RS锁存器)实验步骤(1)在D:\Xinlinx91i\目录下,新建名为rsuocun的新工程。

器件族类型(Device Family)选择”Virtex2P”器件型号(Device)选“XC2VP30 ff896-7”综合工具(Synthesis Tool)选“XST(VHDL/Verilog)”仿真器(Simulator)选“ISE Simulator”(2)设计输入:输入上面所提到的代码,保存后如图1.1所示。

(3)功能仿真a)在sources窗口“sources for”中选择“Behavioral Simulation”。

b)用“Test Bench WaveForm”添加激励源,如图1.2所示。

仿真波形分析如下:开始在0到100ns内的是R,S均为0,则不能确定状态,这是RS锁存器的不允许状态。

Q1,Q2是两个互为相反的变量,其波形可以观察到。

观察波形可知,当R为1,S为0时,输出的Q1为0,Q2为1,实现置0功能;当R为0,S为1时,输出的Q1为1,验证了电路的置1功能;当R,S均为1的时候,电路输出保持原状态不变。

基于verilog的运算器与存储器的设计与实现实验报告

基于verilog的运算器与存储器的设计与实现实验报告

基于verilog的运算器与存储器的设计与实现实验报告计算机组成原理实验报告评语: 课中检查完成的题号及题数:成绩:自评成绩:必填课后完成的题号与题数:实验报告实验名称:基于Verilog语言的运算器和存储器设计与实现日期:姓名:2021.11.4班级:学号:一、实验目的:1. 了解运算器的组成结构。

2. 掌握运算器的工作原理。

3. 掌握静态随机存储器RAM 工作特性及数据的读写方法二、实验内容:右方为低4位运算芯1. 两片74LS181 芯片以并/串形式构成的8位字长的运算器。

片,左方为高4位运算芯片。

低位芯片的进位输出端Cn+4与高位芯片的进位输入端Cn相连,使低4位运算产生的进位送进高4位。

低位芯片的进位输入端Cn可与外来进位相连,高位芯片的进位输出到外部。

两个芯片的控制端S0~S3 和M 各自相连,其控制电平按表2.6-1。

为进行双操作数运算,运算器的两个数据输入端分别由两个数据暂存器DR1、DR2(用锁存器74LS273 实现)来锁存数据。

要将内总线上的数据锁存到DR1 或DR2 中,则锁存器74LS273 的控制端LDDR1 或LDDR2 须为高电平。

当T4 脉冲来到的时候,总线上的数据就被锁存进DR1或DR2 中了。

为控制运算器向内总线上输出运算结果,在其输出端连接了一个三态门(用74LS245 实现)。

若要将运算结果输出到总线上,则要将三态门74LS245 的控制端ALU-B 置低电平。

否则输出高阻态。

数据输入单元(实验板上印有INPUT DEVICE)用以给出参与运算的数据。

其中,输入开关经过一个三态门(74LS245)和内总线相连,该三态门的控制信号为SW-B,取低电平时,开关上的数据则通过三态门而送入内总线中。

总线数据显示灯(在BUS UNIT 单元中)已与内总线相连,用来显示内总线上的数据。

控制信号中除T4 为脉冲信号,其它均为电平信号。

由于实验电路中的时序信号均已连至“W/R UNIT”单元中的相应时序信号引出端,因此,需要将“W/R UNIT”单元中的T4 接至“STATE UNIT”单元中的微动开关KK2 的输出端。

RS锁存器实验心得

RS锁存器实验心得

RS锁存器实验心得
RS锁存器最大实验心得,就是这个触发器的状态,Q=1时,即表示当前触发器状态为1。

RS锁存器实验的S代表置位,当设置S=1,R=0时,由于S=1,不管RS锁存器设置前的Q的状态是0还是1,由或非真值表我们知道,RS锁存器实验的输出结果总是为0!即非Q=0。

又因为RS锁存器的非Q=0,R=0,此时由真值表可知Q=1。

即我们称RS锁存器的S=1是我们希望这个RS锁存器实验的触发器的状态为1。

在或非门中这种状态被称为“置一”。

RS锁存器实验的R代表复位,当设置R=1,S=0时,由于R=1,不管RS锁存器设置前的非Q状态是0还是1,都有RS锁存器的输出结果为0,即Q=0,即我们称R=1是我们希望RS锁存器实验的触发器的状态能被复位回0的状态。

(当然啦,Q=0后,因为S=0,Q=0,所以又有RS锁存器实验的非Q=1.)在或非门中这种状态被称为“置零”。

RS锁存器实验的非Q,我的理解是“一个辅助”,RS锁存器的辅助这个电路构成这样奇特的结构——能够实现RS锁存器实验的“保存Q状态”的功能,非Q和Q是RS锁存器的互补关系。

RS锁存器的作用是,在正常情况下,我们都是要么“S=1,R=0”,要么“S=0,R=1”.如果RS锁存器突然断电了!哎,S=R=0了!那我们怎么保持RS锁存器的Q的状态不改变呢?——这就是RS锁存器最大的实验心得。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安邮电學院
基于Verilog的HDL设计基础
实验报告
学院名称:通信与信息工程学院
学生姓名:
专业名称:通信工程
班级:
学号:
时间:2010年11月24日
实验题目带有延迟的RS锁存器
一、实验内容
对带有延迟的RS锁存器的设计与验证;再对其进行综合生成网表文件;然后进行后仿真。

二、技术规范
1、输入引脚:reset,set ;输出引脚:q,qbar。

2、功能:这是具有延迟的RS锁存器。

由reset,set输入数据,由q,qbar 输出数据,此电路有锁存(记忆)功能,所以去,q,qbar此时刻的值会影响下个时刻的值。

三、实验步骤
1、在modulesim软件中进行带有延迟的RS锁存器的设计与验证,直到运
行结果全部正确;
2、在Quartus软件中对刚刚完成的计数器进行综合,生成网表文件;
3、在modulesim软件中对计数器进行进行后仿真。

四、源代码
1.门级描述:
module suocun(reset,set,q,qbar);
input reset,set;
output q,qbar;
wire q,qbar;
begin
nand a1(q,reset,qbar);
nand a2(qbar,set,q);
end
endmodule
2.激励模块
module simulate;
reg A,B;
wire C,D;
suocun s1(A,B,C,D);
initial
begin
$monitor($time,"reset= %b,set= %b,q = %b,qbar = %b\n",A,B,C,D);
A=1'b0;B=1'b0;
#10 A=1'b0; B=1'b1;
#10 A=1'b1; B=1'b0;
#10 A=1'b1; B=1'b1;
end
endmodule
五、仿真结果及分析
五、调试情况,设计技巧及体会
1、程序调试:
开始输入完毕Compile时出现错误,经检查后发现是在激励模块中WIRE时误对A,B也进行了声明。

仔细看看后发现错误,最终修改正确运行成功。

之后进行前仿真和形成网表。

最后进行在modulesim软件中对计数器进行进行后仿真
2、后仿真:
后防真时要注意文件的扩展名及储存路径。

尽量保持存储文件名一致。

3、综合:
在进行综合生成网表前一定要熟悉掌握每一个选项和步骤。

不会的查书看最后在同学的帮助下终于搞定了。

相关文档
最新文档