Verilog HDL硬件描述语言实验报告

  • 格式:doc
  • 大小:147.50 KB
  • 文档页数:20

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。