Verilog HDL硬件描述语言实验报告
Verilog HDL实验报告
HDL实验报告专业电子科学与技术姓名学号指导老师1 实验一Modelsim仿真软件的使用1.1 实验目的(1)熟悉Modelsim 软件;(2)掌握Modelsim 软件的编译、仿真方法;(3)熟练运用Modelsim 软件进行HDL 程序设计开发。
1.2 实验步骤(1)学习使用Modelsim软件;(2)分析原理及功能;(3)用Verilog HDL编写程序;(4)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
1.3 实验内容用Verilog HDL 程序实现一个异或门,Modelsim 仿真,观察效果。
1.4.1 程序module my_xor(ina,inb,out);input ina,inb;output out;assign out=ina^inb;endmodulemodule t_xor;reg ina,inb;wire out;initialbeginina=1'b0;forever #20 ina=~ina;endinitialbegininb=1'b0;forever #10 inb=~inb;endmy_xor tt(.ina(ina),.inb(inb),.out(out));endmodule2 实验二简单组合电路设计2.1 实验目的(1)掌握基于Modelsim 的数字电路设计方法;(2)熟练掌握HDL 程序的不同实现方法2.2 实验步骤(1)分析原理及功能;(2)根据原理用Verilog HDL编写程序;(3)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
2.3 实验内容设计一个三人表决器(高电平表示通过) ,实验内容如下:(1)三个人,一个主裁判,两个副裁判;(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。
使用Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真(要求:至少使用两种方法实现上述实验内容和testbench)。
Verilog HDL硬件描述语言实验报告
Verilog HDL实验报告学院:应用科学学院班级:电科13-2班姓名:学号:实验一组合逻辑电路设计(1)实验目的(1)熟悉FPGA设计流程;(2)熟悉DE2开发板的基本元件使用(开关、发光二极管);(3)学习基本组合逻辑元件的Verilog HDL设计以及实现(数据选择器);(4)掌握连续赋值语句使用;实验内容本实验的目的是学习如何连接一个简单的外部输入、输出器件到FPGA 芯片以及如何在FPGA器件上实现逻辑电路控制简单外部器件。
考虑使用DE2开发板上拨动开关SW17-0(toggle Switch)作为电路的输入。
使用发光二极管(Light Emitt-ing Diodes,LEDs)和7段显示数码管(7-segment Display)作为电路的输出。
第1部分连续赋值语句步骤1、新建Quartus II工程,选择Cyclone II EP2C35F672C6作为目标芯片,该芯片是DE2开发板上的FPGA芯片;2、编写Verilog HDL代码加入到Quaruts II工程;3、引脚分配,并编译工程该工程;4、将编译好的电路下载到FPGA器件。
扳动拨动开关观察相应的发光二极管显示,验证电路功能是否正确;代码module part1(input wire[2:0]SW,output wire LEDR);wire r_g,s_g,qa,qb;and u1(r_g, SW[0], SW[1]);and u2(s_g, SW[1], SW[2]);nor u3(qa, r_g, qb);nor u4(qb, qa, s_g);assign LEDR = qa;endmodule第2部分简单的数据选择器步骤1 .新建Quartus II工程;2.在工程中加入8位宽的2选1数据选择器Verilog HDL代码。
使用DE2开发板上的SW17作为输入s,开关SW7-0作为输入X,SW15-8作为输入Y。
可编程逻辑实验报告(3篇)
第1篇一、实验目的1. 熟悉可编程逻辑器件(FPGA)的基本原理和操作方法。
2. 掌握使用FPGA进行数字电路设计的流程。
3. 学会使用FPGA进行简单数字电路的设计与实现。
二、实验器材1. FPGA开发板2. 编译器软件(如Xilinx ISE、Vivado等)3. 实验指导书4. 实验数据线三、实验原理可编程逻辑器件(FPGA)是一种基于半导体工艺的可编程数字电路,具有高集成度、高速度、可重构性强等特点。
FPGA通过内部逻辑单元(如查找表、触发器等)来实现各种数字电路功能。
本实验主要涉及以下原理:1. 数字电路基本原理2. 可编程逻辑器件(FPGA)的基本结构和工作原理3. 编译器软件的使用方法四、实验步骤1. 熟悉开发板(1)认识开发板上的各个模块,如时钟模块、输入输出模块、存储器模块等。
(2)了解开发板上各个模块的功能和作用。
2. 设计数字电路(1)根据实验要求,设计所需的数字电路。
(2)使用原理图或HDL语言进行电路描述。
3. 编译与下载(1)使用编译器软件对设计的数字电路进行编译。
(2)生成比特流文件。
(3)将比特流文件下载到FPGA中。
4. 测试与验证(1)观察FPGA上各个模块的输出信号,验证电路功能是否正确。
(2)使用示波器等仪器进行波形观察,进一步验证电路功能。
五、实验内容1. 设计一个4位全加器(1)原理图设计:使用原理图编辑器设计4位全加器电路。
(2)HDL语言设计:使用HDL语言描述4位全加器电路。
(3)编译与下载:将设计的电路编译成比特流文件,下载到FPGA中。
(4)测试与验证:观察FPGA上各个模块的输出信号,验证4位全加器电路功能是否正确。
2. 设计一个8位奇偶校验器(1)原理图设计:使用原理图编辑器设计8位奇偶校验器电路。
(2)HDL语言设计:使用HDL语言描述8位奇偶校验器电路。
(3)编译与下载:将设计的电路编译成比特流文件,下载到FPGA中。
(4)测试与验证:观察FPGA上各个模块的输出信号,验证8位奇偶校验器电路功能是否正确。
Verilog HDL 实验报告
Verilog实验报告班级:学号:姓名:实验1 :用 Verilog HDL 程序实现直通线1 实验要求:(1) 编写一位直通线的 Veirlog HDL 程序.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4) 建议用模式 52 试验程序:module wl(in,out);input in;output out;wire out;assign out=in;endmodule3 测试基准:`include “wl.v”module wl_tb;reg in_tb;wire out_tb;initialbeginin_tb =0;#100 in_tb =1;#130 in_tb =0;endendmodule4 仿真图形:实验2 :用 Verilog HDL 程序实现一位四选一多路选择器1实验要求:(1) 编写一位四选一多路选择器的 Veirlog HDL 程序.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4)建议用模式 52 试验程序:module mux4_to_1 (out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3;input s1, s0;reg out;always @ (s1 or s0 or i0 or i1 or i2 or i3)begincase ({s1, s0})2'b00: out=i0;2'b01: out=i1;2'b10: out=i2;2'b11: out=i3;default: out=1'bx;endcaseendendmodule3 测试基准:`include "mux4_to_1.v"module mux4_to_1_tb1;reg ain,bin,cin,din;reg[1:0] select;reg clock;wire outw;initialbeginain=0;bin=0;cin=0;din=0;select=2'b00;clock=0;endalways #50 clock=~clock;always @(posedge clock)begin#1 ain={$random} %2;#3 bin={$random} %2;#5 cin={$random} %2;#7 din={$random} %2;endalways #1000 select[0]=!select[0];always #2000 select[1]=!select[1];mux4_to_1 m(.out(outw),.i0(ain),.i1(bin),.i2(cin),.i3(din),.s1(select[1]),.s0(select[0])); endmodule4 仿真图形:实验3:用 Verilog HDL 程序实现十进制计数器1实验要求:(1) 编写十进制计数器的 Veirlog HDL 程序. 有清零端与进位端, 进位端出在输出为 9 时为高电平.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4) 自行选择合适的模式2 实验程序:module counter_10c (Q, clock, clear, ov);output [3:0] Q;output ov;input clock, clear;reg [3:0] Q;reg ov;initial Q=4'b0000;always @ (posedge clear or negedge clock)beginif (clear)Q<=4'b0;else if (Q==8)beginQ<=Q+1;ov<=1'b1;endelse if (Q==9)beginQ<=4'b0000;ov<=1'b0;endelsebeginQ<=Q+1;ov<=1'b0;endendendmodule3 测试基准:`include"./counter_10c.v"module counter_10c_tb;wire[3:0] D_out;reg clk,clr;wire c_out;reg[3:0] temp;initialbeginclk=0;clr=0;#100 clr=1;#20 clr=0;endalways #20 clk=~clk;counter_10c m_1(.Q(D_out),.clear(clr),.clock(clk),.ov(c_out)); endmodule4 仿真波形:实验4 :用 Verilog HDL 程序实现序列检测器1 实验要求:、(1) 编写序列检测器的 Veirlog HDL 程序. 检测串行输入的数据序列中是否有目标序列5'b10010, 检测到指定序列后, 用一个端口输出高电平表示.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4) 自行选择合适的模式2试验程序:module e15d1_seqdet( x, z, clk, rst);input x,clk, rst;output z;reg [2:0] state;wire z;parameter IDLE = 3 'd0,A = 3'd1,B = 3'd2,C = 3'd3,D = 3'd4,E = 3'd5,F = 3'd6,G = 3'd7;assign z =(state==D && x==0)?1:0;always @(posedge clk or negedge rst)if(!rst)beginstate<=IDLE;endelsecasex(state)IDLE: if(x==1)state<=A;else state<=IDLE;A: if (x==0)state<=B;else state<=A;B: if (x==0)state<=C;else state<=F;C: if(x==1)state<=D;else state<=G;D: if(x==0)state<=E;else state<=A;E: if(x==0)state<=C;else state<=A;F: if(x==1)state<=A;else state<=B;G: if(x==1)state<=F;else state <=G;default: state<=IDLE;endcaseendmodule3测试基准:`include"e15d1_seqdet.v"`timescale 1ns/1ns`define halfperiod 20module e15d1_seqdet_tb;reg clk, rst;reg [23:0] data;wire z;reg x;initialbeginclk =0;rst =1;#2 rst =0;#30 rst =1;data= 20 'b1100_1001_0000_1001_0100;#(`halfperiod*1000) $stop;endalways #(`halfperiod) clk=~clk;always @ (posedge clk)begin#2 data={data[22:0],data[23]};x=data[23];ende15d1_seqdet m(.x(x),.z(z),.clk(clk),.rst(rst)); endmodule4仿真波形:。
Verilog HDL 实验报告
实验一Modelsim仿真软件的使用一、实验目的(1)熟悉Modelsim 软件(2)掌握Modelsim 软件的编译、仿真方法(3)熟练运用Modelsim 软件进行HDL 程序设计开发二、实验内容1、实验要求用Verilog HDL 程序实现一个异或门,Modelism仿真,观察效果。
2、步骤1、建立工程2、添加文件到工程3、编译文件4、查看编译后的设计单元5、将信号加入波形窗口6、运行仿真3、方法moduleyihuo (a,b,c);inputa,b;output c;assign c=a^b;endmodule测试程序:module t_yihuo;reg a,b;wire c;initialbegina=0;forever #20 a=~a;endinitialbeginb=0;forever #30 b=~b;endyihuou1(a,b,c);endmodule二、实验结果波形图:三、分析和心得通过这次的实验,我基本熟悉Modelsim软件,掌握了Modelsim软件的编译、仿真方法。
同时在编写程序的过程中,加深了我对课上所讲的HDL的语法的认识。
实验二简单组合电路设计一、实验目的(1)掌握基于Modelsim的数字电路设计方法(2)熟练掌握HDL 程序的不同实现方法二、实验内容1、实验要求设计一个三人表决器(高电平表示通过),实验内容如下:(1)三个人,一个主裁判,两个副裁判;(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。
使用 Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真。
2、方法module test(a,b,c,s);inputa,b,c;output s;assign s=c|(b&a);endmodulemodulet_test;rega,b,c;wire s;initialbegina=0;forever#10 a=~a;endinitialbeginb=0;forever #20 b=~b;endinitialbeginc=0;forever#40 c=~c;endtest u1(a,b,c,s);endmodule三、实验结果四、分析和心得通过本次实验,我掌握基于Modelsim的简单数字电路设计方法,且尝试了用不同方法实现功能,三人表决器可以通过testbench测试程序实现,也可以利用always模块实现,可见程序的设计思想是很重要的。
verilog实验报告
verilog实验报告Verilog实验报告引言:Verilog是一种硬件描述语言(HDL),用于设计和模拟数字电路。
它是一种高级语言,能够描述电路的行为和结构,方便工程师进行数字电路设计和验证。
本实验报告将介绍我在学习Verilog过程中进行的实验内容和所获得的结果。
实验一:基本门电路设计在这个实验中,我使用Verilog设计了基本的逻辑门电路,包括与门、或门和非门。
通过使用Verilog的模块化设计,我能够轻松地创建和组合这些门电路,以实现更复杂的功能。
我首先创建了一个与门电路的模块,定义了输入和输出端口,并使用逻辑运算符和条件语句实现了与门的功能。
然后,我创建了一个测试模块,用于验证与门的正确性。
通过输入不同的组合,我能够验证与门的输出是否符合预期。
接下来,我按照同样的方法设计了或门和非门电路,并进行了相应的测试。
通过这个实验,我不仅学会了使用Verilog进行基本门电路的设计,还加深了对逻辑电路的理解。
实验二:时序电路设计在这个实验中,我学习了如何使用Verilog设计时序电路,例如寄存器和计数器。
时序电路是一种具有状态和时钟输入的电路,能够根据时钟信号的变化来改变其输出。
我首先设计了一个简单的寄存器模块,使用触发器和组合逻辑电路实现了数据的存储和传输功能。
然后,我创建了一个测试模块,用于验证寄存器的正确性。
通过输入不同的数据和时钟信号,我能够观察到寄存器的输出是否正确。
接下来,我设计了一个计数器模块,使用寄存器和加法电路实现了计数功能。
我还添加了一个复位输入,用于将计数器的值重置为初始状态。
通过测试模块,我能够验证计数器在不同的时钟周期内是否正确地进行计数。
通过这个实验,我不仅学会了使用Verilog设计时序电路,还加深了对触发器、寄存器和计数器的理解。
实验三:组合电路设计在这个实验中,我学习了如何使用Verilog设计组合电路,例如多路选择器和加法器。
组合电路是一种没有状态和时钟输入的电路,其输出只取决于当前的输入。
《HDL语言硬件设计》实验报告
《HDL语言硬件设计》实验报告设计输入与门级结构建模仿真一、实验目的:1、掌握简单门级结构建模电路的设计方法。
2、初步掌握ModelSim6.0软件的基本操作与应用。
3、初步了解verilog建模仿真的设计全过程。
二、实验设备:PC机ModelSim6.0开发软件三、试验要求:学习使用ModelSim6.0设计软件。
学习文本编辑器使用,掌握文本编辑器的输入方法,完成4选1多路选择器结构建模的输入,并完成仿真。
四、实验:写出4选1多路选择器的模块代码,并对其进行仿真得出仿真结果,并分析仿真结果。
四选一多路选择器仿真程序module MUX4x1(Z,D0,D1,D2,D3,S0,S1);input D0,D1,D2,D3,S0,S1;output Z;wire T1,T2,T3,T4;and(T0,D0,S1bar,S0bar),(T1,D1,S1bar,S0),(T2,D2,S1,S0bar),(T3,D3,S1,S0);not(S1bar,S1),(S0bar,S0);or(Z,T0,T1,T2,T3);endmodule仿真模块代码`timescale 10ns/1nsmodule test_MUX4x1;reg[3:0]d;reg[1:0]s;wire out;MUX4x1 mymux(out,d[0],d[1],d[2],d[3],s[0],s[1]);initialbegin$moniter($time,"d=%b,s[1]=%b,s[0]=%b,out=%b\n",d,s[1],s[0],out);d=4'b1010;s=2'b00;//$display($time,"d=%b,s[1]=%b,s[0]=%b,out=%b\n",d,s[1],s[0],out); #5 s=2'b00;//$display($time,"d=%b,s[1]=%b,s[0]=%b,out=%b\n",d,s[1],s[0],out); #5 s=2'b01;//$display($time,"d=%b,s[1]=%b,s[0]=%b,out=%b\n",d,s[1],s[0],out); #5 s=2'b10;//$display($time,"d=%b,s[1]=%b,s[0]=%b,out=%b\n",d,s[1],s[0],out); #5 s=2'b11;//$display($time,"d=%b,s[1]=%b,s[0]=%b,out=%b\n",d,s[1],s[0],out); #100 $stop;endendmodule仿真结果(3)实验心得心得体会:每一种语言都有其特点,在编程时必须认真看相关书籍,并从中找到其逻辑思路,快速起草程序大纲。
Verilog-HDL实验报告
HDL实验报告专业电子科学与技术姓名学号指导老师1 实验一Modelsim仿真软件的使用1.1 实验目的(1)熟悉Modelsim 软件;(2)掌握Modelsim 软件的编译、仿真方法;(3)熟练运用Modelsim 软件进行HDL 程序设计开发。
1.2 实验步骤(1)学习使用Modelsim软件;(2)分析原理及功能;(3)用Verilog HDL编写程序;(4)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
1.3 实验内容用Verilog HDL 程序实现一个异或门,Modelsim 仿真,观察效果。
1.4.1 程序module my_xor(ina,inb,out);input ina,inb;output out;assign out=ina^inb;endmodulemodule t_xor;reg ina,inb;wire out;initialbeginina=1'b0;forever #20 ina=~ina;endinitialbegininb=1'b0;forever #10 inb=~inb;endmy_xor tt(.ina(ina),.inb(inb),.out(out));endmodule2 实验二简单组合电路设计2.1 实验目的(1)掌握基于Modelsim 的数字电路设计方法;(2)熟练掌握HDL 程序的不同实现方法2.2 实验步骤(1)分析原理及功能;(2)根据原理用Verilog HDL编写程序;(3)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
2.3 实验内容设计一个三人表决器(高电平表示通过) ,实验内容如下:(1)三个人,一个主裁判,两个副裁判;(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。
使用Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真(要求:至少使用两种方法实现上述实验内容和testbench)。
硬件语言实验报告
硬件语言实验报告实验简介本次实验旨在通过学习硬件语言,理解并掌握硬件描述语言的相关知识,了解硬件语言的应用场景和使用方法。
本实验使用的硬件描述语言为Verilog,通过设计和实现一个简单的数字电路,加深对硬件语言的理解。
实验目标- 了解硬件语言的基本概念和原理- 学习使用Verilog进行硬件描述- 掌握简单数字电路的设计和实现方法实验步骤1. 学习硬件语言基础知识在开始实验之前,首先通过阅读教材和相关资料,学习硬件语言的基本概念和原理。
了解硬件语言的特点、应用场景以及与软件编程语言的区别。
2. 设计数字电路根据实验要求,设计一个简单的数字电路,并进行相应的功能分析和需求确定。
在设计过程中,需要考虑电路的输入输出接口、逻辑关系和运算规则等因素。
3. 使用Verilog进行硬件描述根据设计的数字电路,使用Verilog进行硬件描述。
编写Verilog代码,描述电路的功能和逻辑关系。
在编写过程中,需要关注代码的风格和结构,确保代码的可读性和可维护性。
4. 进行编译和仿真使用硬件描述语言编译工具,将编写的Verilog代码进行编译,生成对应的仿真文件。
通过仿真工具,对设计的数字电路进行仿真。
检查仿真结果,确保电路的功能和性能符合设计要求。
5. 优化和调试根据仿真结果,分析电路的性能和问题,进行相应的优化和调试工作。
查找代码中可能存在的错误或缺陷,并进行修复。
在优化过程中,可以通过调整逻辑关系、增加缓存等方式提升电路的性能和响应速度。
6. 完成实验报告根据实验过程和结果,撰写实验报告。
对实验目标、步骤和结果进行详细的描述和分析。
对实验中遇到的问题和解决方法进行总结,并提出进一步的改进和展望。
实验结果与讨论通过本次实验,我成功设计并实现了一个简单的数字电路。
在使用Verilog进行硬件描述的过程中,我掌握了硬件语言的语法和使用方法。
通过对仿真结果的分析,我发现电路的性能和响应速度还有待优化,可以通过增加缓存和优化逻辑关系等方式来改善。
verilog hdl实验报告
verilog hdl实验报告《Verilog HDL实验报告》Verilog HDL(硬件描述语言)是一种用于描述电子系统的硬件的语言,它被广泛应用于数字电路设计和硬件描述。
本实验报告将介绍Verilog HDL的基本概念和使用方法,并通过实验展示其在数字电路设计中的应用。
实验目的:1. 了解Verilog HDL的基本语法和结构2. 掌握Verilog HDL的模块化设计方法3. 熟悉Verilog HDL的仿真和综合工具的使用实验内容:1. Verilog HDL的基本语法和结构Verilog HDL是一种硬件描述语言,其语法和结构类似于C语言。
它包括模块定义、端口声明、信号赋值等基本元素。
在本实验中,我们将学习如何定义Verilog模块,并使用端口声明和信号赋值描述数字电路的行为。
2. Verilog HDL的模块化设计方法Verilog HDL支持模块化设计,可以将复杂的电路分解为多个模块,每个模块描述一个子电路的行为。
在本实验中,我们将学习如何设计和实现Verilog模块,并将多个模块组合成一个完整的数字电路。
3. Verilog HDL的仿真和综合工具的使用Verilog HDL可以通过仿真工具进行功能验证,也可以通过综合工具生成实际的硬件电路。
在本实验中,我们将使用Verilog仿真工具对设计的数字电路进行功能验证,并使用综合工具生成对应的硬件电路。
实验步骤:1. 学习Verilog HDL的基本语法和结构2. 设计一个简单的数字电路,并实现Verilog模块描述其行为3. 使用仿真工具对设计的数字电路进行功能验证4. 使用综合工具生成对应的硬件电路实验结果:通过本实验,我们学习了Verilog HDL的基本概念和使用方法,并成功设计和实现了一个简单的数字电路。
我们使用仿真工具对设计的数字电路进行了功能验证,并使用综合工具生成了对应的硬件电路。
实验结果表明,Verilog HDL在数字电路设计中具有重要的应用价值。
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```四、实验结果与分析(一)基本逻辑门的结果通过仿真,与门、或门和非门的输出结果与预期的逻辑功能完全一致,验证了代码的正确性。
【最新文档】硬件描述语言实验报告-范文模板 (12页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==硬件描述语言实验报告Verilog HDL 硬件描述语言实验报告学院:信息科学与工程学院班级:学号:姓名:实验一简单组合逻辑电路的设计一实验要求1. 用verilog HDL语言描写出简单的一位数据比较器及其测试程序;2. 用测试程序对比较器进行波形仿真测试;画出仿真波形;3. 总结实验步骤和实验结果。
二实验原理与内容这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。
在Verilog HDL中,描述组合逻辑时常使用assign结构。
注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。
模块源代码://--------------- compare.v ----------------- modulecompare(equal,a,b); input a,b; output equal;assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,//equal输出为0。
endmodule测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。
测试模块源代码:`timescale 1ns/1ns //定义时间单位。
module comparetest; reg a,b; wire equal;initial //initial常用于仿真时信号的给出。
begin a=0; endmodule得出测试程序的仿真图形为:b=0;#100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0;#100 $stop; //系统任务,暂停仿真以便观察仿真波形。
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 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硬件描述语言实验报告
硬件描述语言实验报告班级: 2016133班学号: 201613354姓名: 齐方目录硬件描述语言·····················································································································- 0 - 实验报告·································································································································- 0 - 实验一简单组合逻辑设计·································································································- 2 - 实验二简单分频时序逻辑电路的设计·············································································- 5 - 实验三利用条件语句实现计数分频时序电路·································································- 8 - 实验四阻塞赋值与非阻塞赋值的区别·········································································· - 14 - 实验五用always块实现较复杂的组合逻辑电路 ························································· - 18 -实验一简单组合逻辑设计一、实验目的1.掌握基本组合逻辑电路的实现方法。
verlog实验报告
Verilog实验报告1. 引言本实验旨在通过使用Verilog硬件描述语言来实现一个简单的电路设计。
Verilog是一种用于描述电路行为和结构的编程语言,可以用于设计和仿真数字电路。
本实验将通过逐步的思考过程,详细说明实验的设计和实现。
2. 设计思路首先,我们需要确定电路的功能和需要实现的功能。
在这个例子中,我们将设计一个简单的4位加法器电路。
接下来,我们需要创建一个顶层模块,该模块将包含所需的输入和输出端口,并将其他模块连接在一起。
我们可以使用以下代码创建一个顶层模块:module top_module(input [3:0] a, input [3:0] b, output [3:0] sum);// 端口声明// 内部逻辑实现endmodule然后,我们可以创建一个子模块,该模块将执行实际的加法操作。
我们可以使用以下代码创建一个加法器模块:module adder(input [3:0] a, input [3:0] b, output [3:0] sum);// 加法操作实现endmodule在加法器模块中,我们可以使用位级操作符+来执行实际的加法运算。
我们可以使用以下代码实现加法操作:assign sum = a + b;最后,我们将在顶层模块中实例化加法器模块,并将输入和输出端口连接在一起。
我们可以使用以下代码实现实例化和连接:adder adder_instance(.a(a), .b(b), .sum(sum));3. 实验结果在完成上述步骤后,我们可以编译和仿真我们的Verilog代码。
可以使用常见的Verilog仿真器(如ModelSim)来进行仿真。
在仿真期间,我们可以为输入端口输入不同的二进制数,并观察输出端口是否正确计算了输入数的和。
通过逐步调试和测试,我们可以确保电路的正确性。
4. 总结通过本实验,我们学习了使用Verilog硬件描述语言设计和实现数字电路。
我们了解了Verilog的基本语法和结构,并通过实例演示了设计一个简单的4位加法器电路的过程。
实验二硬件描述语言(VerilogHDL)软件基本使用方法综述
编译通过后系统信息窗口:报告相关的使用芯片类型、使用的逻辑元素个数 等信息
⑷建立波形文件,设置相关端口信号,同实验一基本相同,设置之后保存波形文 件,重新进行编译。
⑸点击时序仿真按钮,进行仿真,观察结果可知完全符合数字选择电路功能。 这种通过Verilog HDL编程实现的功能与电路设计完成的功能完全相同。
⑷Verilog模块的结构特点 • Verilog程序是由若干模块构成的。每个模块的内容 都嵌在module和endmodule两个关键字之间;每个 模块实现特定的逻辑功能。 • 每个模块首先要进行端口定义,并说明输入和输出 口(input、output或inout),然后对模块的功能 进行定义。 • Verilog程序书写格式自由,一行可以写几个语句, 一个语句也可以分多行写,。 • 除了endmodule等少数语句外,每个语句的最后必 须有分号。 • 可用 /*……*/ 和 //……对Verilog程序作注释。 • Verilog程序书写区分大小写,关键字必须小写。
更多控制端口设置
lpm_counter计数器功能仿真波形
模24方向可控计数器电路
⑸Verilog 模块的模板
•module <顶层模块名> (<输入输出端口列表>); •output 输出端口列表; //输出端口声明 •input 输入端口列表; //输入端口声明 •/*定义数据,信号的类型,函数声明*/ •reg 信号名; •//逻辑功能定义 •assign <结果信号名>=<表达式>; //使用assign语句定义逻辑功能 •//用always块描述逻辑功能 •always @ (<敏感信号表达式>) • begin • //过程赋值 • //if-else,case语句 • //while,repeat,for循环语句 • //task,function调用 • end •//调用其它模块 • <调用模块名module_name > <例化模块名> (<端口列表port_list >); •//门元件例化 • 门元件关键字 <例化门元件名> (<端口列表port_list>); •endmodule
硬件描述语言实验报告
北京科技大学计算机与通信工程学院硬件描述语言实验报告专业:计算机科学与技术班级:学生姓名:学号:指导教师:实验地点:实验时间:2017 年月日~ 月日实验成绩:________________________________一、实验目的与实验要求1 实验目的(1)熟悉常用的EDA设计工具、设计流程,掌握前端设计要点;(2)通过简单的逻辑功能模块的设计,加深对硬件描述语言的理解和对逻辑设计的认识;(3)理解逻辑综合的概念,熟悉V erilog的编码风格,掌握可综合的逻辑设计;(4)训练组合逻辑设计、时序逻辑设计的能力,以及基本的设计验证能力。
2 实验要求(1)在有限的实验课内学时可能难以较好完成所有实验内容,因此将实验板分组下发,要求在实验课之外抽时间完成剩余实验内容;(2)对于每个实验都需要完成逻辑电路设计以及TestBench模块的编写,能够根据前仿真的波形图给粗结果分析;针对需要板子上验证的题目,需进一步给出相关控制逻辑的设计及板级验证说明。
(3)完成的每个实验需要在实验课内经指导教师或助教现场检查、解释波形及验证逻辑,回答指导教师提出的问题,以确保实验完成的质量;二、实验设备(环境)及要求实验室提供Windows 7操作系统下的Xilinx开发平台vivado2015.4环境,以及EGO开发板。
三、实验内容、步骤与结果分析1 实验11.1 实验内容设计一个周期为40个时间单位的时钟信号,其占空比为25%。
使用always和initial块进行设计。
将其在仿真0时刻的值初始化为0。
1.2 实验步骤源代码:`timescale 1ns / 1psmodule clock_40();output clock;endmodule1.3 结果分析Text bench 设计:module clock_40_tb();reg clock;initialclock<=0;alwaysbegin#30 clock<=1;#10 clock<=0;endendmodule周期为40个时间单位的时钟信号仿真波形截图验证说明:可以由图中看出该时钟产生占空比为25%的时钟波形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Verilog HDL实验报告学院:应用科学学院班级:电科13-2班姓名:学号:实验一组合逻辑电路设计(1)实验目的(1)熟悉FPGA设计流程;(2)熟悉DE2开发板的基本元件使用(开关、发光二极管);(3)学习基本组合逻辑元件的Verilog HDL设计以及实现(数据选择器);(4)掌握连续赋值语句使用;实验内容本实验的目的是学习如何连接一个简单的外部输入、输出器件到FPGA 芯片以及如何在FPGA器件上实现逻辑电路控制简单外部器件。
考虑使用DE2开发板上拨动开关SW17-0(toggle Switch)作为电路的输入。
使用发光二极管(Light Emitt-ing Diodes,LEDs)和7段显示数码管(7-segment Display)作为电路的输出。
第1部分连续赋值语句步骤1、新建Quartus II工程,选择Cyclone II EP2C35F672C6作为目标芯片,该芯片是DE2开发板上的FPGA芯片;2、编写Verilog HDL代码加入到Quaruts II工程;3、引脚分配,并编译工程该工程;4、将编译好的电路下载到FPGA器件。
扳动拨动开关观察相应的发光二极管显示,验证电路功能是否正确;代码module part1(input wire[2:0]SW,output wire LEDR);wire r_g,s_g,qa,qb;and u1(r_g, SW[0], SW[1]);and u2(s_g, SW[1], SW[2]);nor u3(qa, r_g, qb);nor u4(qb, qa, s_g);assign LEDR = qa;endmodule第2部分简单的数据选择器步骤1 .新建Quartus II工程;2.在工程中加入8位宽的2选1数据选择器Verilog HDL代码。
使用DE2开发板上的SW17作为输入s,开关SW7-0作为输入X,SW15-8作为输入Y。
连接拨动开关SW到红色的发光二极管LEDR,同时连接输出M到绿色的发光二极管LEDG7-0。
3.引脚分配,确保作为电路的输入端口的Cyclone II FPGA的引脚正确连接到拨动开关SW,作为电路输出的PPGA引脚正确与LEDR和LEDG连接;4.编译;5.将编译好的电路下载到FPGA器件。
通过扳动拨动开关SW改变电路输入,同时观察LEDR和LEDG的显示是否与之匹配,测试8位宽的2选1数据选择器的功能是否正确。
代码设计文件module part2(input[17:0]SW,output[17:0]LEDR,output[7:0]LEDG);assign LEDR=SW;mux_8bit_2to1 NQ(SW[17],SW[15:8],SW[7:0],LEDG); endmodulemodule mux_2to1(input s,input x,y,output m);assign m=(s&y)|(~s&x);endmodulemodule mux_8bit_2to1(input S,input[7:0]X,Y,output[7:0]M);mux_2to1 m7(S,X[7],Y[7],M[7]);mux_2to1 m6(S,X[6],Y[6],M[6]);mux_2to1 m5(S,X[5],Y[5],M[5]);mux_2to1 m4(S,X[4],Y[4],M[4]);mux_2to1 m3(S,X[3],Y[3],M[3]);mux_2to1 m2(S,X[2],Y[2],M[2]);mux_2to1 m1(S,X[1],Y[1],M[1]);mux_2to1 m0(S,X[0],Y[0],M[0]);endmodule测试台文件`timescale1ns/100psmodule mux2to1_test;reg x,y;reg s;wire m;mux2to1 M(s,x,y,m);initialbeginx=1;y=0;s=0;#10 s=0;#10 s=1;#10$stop;endendmodule波形实验二组合逻辑电路设计(2) 数码和显示实验目的(1)采用always块设计组合逻辑电路;(2)熟悉二进制-十进制译码器和BCD码加法器等组合逻辑电路。
实验内容(1) 组合逻辑7段显示译码器(2)二进制-BCD转换电路(3) 组合逻辑4位全加器(4)BCD码加法电路第1部分组合逻辑7段显示译码器步骤步骤1、1、新建Quartus II工程,在DE2开发板实现该电路。
本试验的目的是用手动方式设计7段显示译码电路。
要求只能使用连续赋值语句,将输出定义为关于输入的逻辑表达式。
2、编写电路的Verilog HDL源文件,并将其包含到Quartus工程。
将FPGA引脚连接到相应的拨动开关和7段显示数码管。
(参考User Manual for the DE2 board)。
引脚分配过程也可以参考Quartus II Introduction using Verilog Design,该文件可以在Altera公司网站大学计划网站的DE2 System CD上找到。
3、编译,并且将编译好的电路下载到FPGA中;4、扳动拨动开关改变电路输入,观察数码管显示并分析电路功能是否正确;代码module part1(input[17:0]SW,output[17:0]LEDR,output[6:0]HEX0,HEX1,HEX2,HEX3);assign LEDR=SW;decoder4_7 decoder4_7_01(SW[0+:4],HEX0);decoder4_7 decoder4_7_02(SW[4+:4],HEX1);decoder4_7 decoder4_7_03(SW[8+:4],HEX2);decoder4_7 decoder4_7_04(SW[12+:4],HEX3);endmodulemodule decoder4_7(input[3:0]a,);assign HEX[6]=~a[3]&~a[2]&~a[1]|a[2]&a[1]&a[0];assign HEX[5]=~a[3]&~a[2]&a[0]|~a[2]&a[1]|a[1]&a[0];assign HEX[4]=a[0]|a[2]&~a[1];assign HEX[3]=~a[3]&~a[2]&~a[1]&a[0]|a[2]&~a[1]&~a[0]|a[2]&a[1]&a[0];assign HEX[2]=~a[2]&a[1]&~a[0];assign HEX[1]=a[2]&~a[1]&a[0]|a[2]&a[1]&~a[0];assign HEX[0]=a[2]&~a[1]&~a[0]|~a[3]&~a[2]&~a[1]&a[0];endmodule第2部分二进制-BCD转换电路步骤1、新建QuartusII工程;2、编译,功能仿真;验证比较器、数据选择器和电路A的功能是否正确;3、编写电路B和7段显示译码电路的Verilog HDL代码。
使用DE2开发板上开关SW3-0代表输入V,使用HEX1和HEX0显示数字d1和d0。
确保引脚分配正确;4、编译,下载编译好电路到FPGA芯片中;5、拨动拨动开关SW3-0改变收入值V,观察输出显示以测试电路的正确性;代码//niqi 1307010213//top levelwmodule part2(input[3:0]SW,output[3:0]LEDR,);wire[2:0]a;wire z;wire[3:0]m;wire[6:0]b,HEX;assign LEDR=SW;compartor compartor_1(SW,z);circuit_A A(SW[2:0],a);mux_4bit_2to1 M(z,SW,{1'b0,a},m);circuit_B B(z,HEX1);decoder4_7 dec(m,HEX0);endmodule//7-segment decodermodule decoder4_7(input[3:0]a,output[6:0]HEX);assign HEX[6]=~a[3]&~a[2]&~a[1]|a[2]&a[1]&a[0];assign HEX[5]=~a[3]&~a[2]&a[0]|~a[2]&a[1]|a[1]&a[0];assign HEX[4]=a[0]|a[2]&~a[1];assign HEX[3]=~a[3]&~a[2]&~a[1]&a[0]|a[2]&~a[1]&~a[0]|a[2]&a[1]&a[0];assign HEX[2]=~a[2]&a[1]&~a[0];assign HEX[1]=a[2]&~a[1]&a[0]|a[2]&a[1]&~a[0];assign HEX[0]=a[2]&~a[1]&~a[0]|~a[3]&~a[2]&~a[1]&a[0];endmodule//circuit_Amodule circuit_A(input[2:0]v,output[2:0]a);assign a=v+3'o6;endmodule//circuit_Bmodule circuit_B(input b,output[6:0]HEX);assign HEX=b?7'b111_1001:7'b111_1111;endmodule//4-bit 2-to-1 multiplexermodule mux_4bit_2to1(input s,input[3:0]x1,x2,output[3:0]f);assign f=s?x2:x1;endmodule//Comparatormodule compartor(input[3:0]v,output z);assign z=(v>4'h9)?1'B1:1'B0;endmodule实验三锁存器、触发器和寄存器实验目的(1)掌握锁存器、触发器和寄存器的门级描述以及行为级描述;(2)掌握组合逻辑电路和基本存元件描述方式不同;(3)学习Quartus II功能仿真和时序仿真方法;(4)学习Quartus II的RTL Viewer和T echnology Viewer工具的使用;实验内容1.门控RS触发器的设计2.D锁存器的设计3.D触发器的设计第1部分门控RS触发器步骤1.新建Quartus II工程,选择目标器件为Cyclone II EP2C35F672C6。