Verilog HDL硬件描述语言实验报告Word下载.docx
《Verilog HDL硬件描述语言实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《Verilog HDL硬件描述语言实验报告Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
2、编写VerilogHDL代码加入到QuarutsII工程;
3、引脚分配,并编译工程该工程;
4、将编译好的电路下载到FPGA器件。
扳动拨动开关观察相应的发光二极管显示,验证电路功能是否正确;
代码
modulepart1(
inputwire[2:
0]SW,
outputwireLEDR
);
wirer_g,s_g,qa,qb;
andu1(r_g,SW[0],SW[1]);
andu2(s_g,SW[1],SW[2]);
noru3(qa,r_g,qb);
noru4(qb,qa,s_g);
assignLEDR=qa;
endmodule
第2部分简单的数据选择器
1.新建QuartusII工程;
2.在工程中加入8位宽的2选1数据选择器VerilogHDL代码。
使用DE2开发板上的SW17作为输入s,开关SW7-0作为输入X,SW15-8作为输入Y。
连接拨动开关SW到红色的发光二极管LEDR,同时连接输出M到绿色的发光二极管LEDG7-0。
3.引脚分配,确保作为电路的输入端口的CycloneIIFPGA的引脚正确连接到拨动开关SW,作为电路输出的PPGA引脚正确与LEDR和LEDG连接;
4.编译;
5.将编译好的电路下载到FPGA器件。
通过扳动拨动开关SW改变电路输入,同时观察LEDR和LEDG的显示是否与之匹配,测试8位宽的2选1数据选择器的功能是否正确。
设计文件
modulepart2(
input[17:
output[17:
0]LEDR,
output[7:
0]LEDG
);
assignLEDR=SW;
mux_8bit_2to1NQ(SW[17],SW[15:
8],SW[7:
0],LEDG);
modulemux_2to1(
inputs,
inputx,y,
outputm
);
assignm=(s&
y)|(~s&
x);
modulemux_8bit_2to1(
inputS,
input[7:
0]X,Y,
output[7:
0]M
);
mux_2to1m7(S,X[7],Y[7],M[7]);
mux_2to1m6(S,X[6],Y[6],M[6]);
mux_2to1m5(S,X[5],Y[5],M[5]);
mux_2to1m4(S,X[4],Y[4],M[4]);
mux_2to1m3(S,X[3],Y[3],M[3]);
mux_2to1m2(S,X[2],Y[2],M[2]);
mux_2to1m1(S,X[1],Y[1],M[1]);
mux_2to1m0(S,X[0],Y[0],M[0]);
测试台文件
`timescale1ns/100ps
modulemux2to1_test;
regx,y;
regs;
wirem;
mux2to1M(s,x,y,m);
initial
begin
x=1;
y=0;
s=0;
#10s=0;
#10s=1;
#10$stop;
end
波形
实验二组合逻辑电路设计
(2)数码和显示
(1)采用always块设计组合逻辑电路;
(2)熟悉二进制-十进制译码器和BCD码加法器等组合逻辑电路。
(1)组合逻辑7段显示译码器
(2)二进制-BCD转换电路
(3)组合逻辑4位全加器
(4)BCD码加法电路
第1部分组合逻辑7段显示译码器步骤
1、1、新建QuartusII工程,在DE2开发板实现该电路。
本试验的目的是用手动方式设计7段显示译码电路。
要求只能使用连续赋值语句,将输出定义为关于输入的逻辑表达式。
2、编写电路的VerilogHDL源文件,并将其包含到Quartus工程。
将FPGA引脚连接到相应的拨动开关和7段显示数码管。
(参考UserManualfortheDE2board)。
引脚分配过程也可以参考QuartusIIIntroductionusingVerilogDesign,该文件可以在Altera公司网站大学计划网站的DE2SystemCD上找到。
3、编译,并且将编译好的电路下载到FPGA中;
4、扳动拨动开关改变电路输入,观察数码管显示并分析电路功能是否正确;
input[17:
output[17:
output[6:
0]HEX0,HEX1,HEX2,HEX3
assignLEDR=SW;
decoder4_7decoder4_7_01(SW[0+:
4],HEX0);
decoder4_7decoder4_7_02(SW[4+:
4],HEX1);
decoder4_7decoder4_7_03(SW[8+:
4],HEX2);
decoder4_7decoder4_7_04(SW[12+:
4],HEX3);
moduledecoder4_7(
input[3:
0]a,
0]HEX
assignHEX[6]=~a[3]&
~a[2]&
~a[1]|a[2]&
a[1]&
a[0];
assignHEX[5]=~a[3]&
a[0]|~a[2]&
a[1]|a[1]&
assignHEX[4]=a[0]|a[2]&
~a[1];
assignHEX[3]=~a[3]&
~a[1]&
a[0]|
a[2]&
~a[0]|
assignHEX[2]=~a[2]&
~a[0];
assignHEX[1]=a[2]&
a[0]|a[2]&
assignHEX[0]=a[2]&
~a[0]|~a[3]&
endmodule
第2部分二进制-BCD转换电路
1、新建QuartusII工程;
2、编译,功能仿真;
验证比较器、数据选择器和电路A的功能是否正确;
3、编写电路B和7段显示译码电路的VerilogHDL代码。
使用DE2开发板上开关SW3-0代表输入V,使用HEX1和HEX0显示数字d1和d0。
确保引脚分配正确;
4、编译,下载编译好电路到FPGA芯片中;
5、拨动拨动开关SW3-0改变收入值V,观察输出显示以测试电路的正确性;
//niqi1307010213
//toplevelw
input[3:
output[3:
output[6:
0]HEX0,HEX1
wire[2:
0]a;
wirez;
wire[3:
0]m;
wire[6:
0]b,HEX;
compartorcompartor_1(SW,z);
circuit_AA(SW[2:
0],a);
mux_4bit_2to1M(z,SW,{1'
b0,a},m);
circuit_BB(z,HEX1);
decoder4_7dec(m,HEX0);
//7-segmentdecoder
a[2]&
//circuit_A
modulecircuit_A(
input[2:
0]v,
output[2:
0]a
assigna=v+3'
o6;
//circuit_B
modulecircuit_B(
inputb,
output[6:
assignHEX=b?
7'
b111_1001:
b111_1111;
//4-bit2-to-1multiplexer
modulemux_4bit_2to1(
inputs,
input[3:
0]x1,x2,
output[3:
0]f
assignf=s?
x2:
x1;
//Comparator
modulecompartor(
outputz
assignz=(v>
4'
h9)?
1'
B1:
B0;
endmodule
实验三锁存器、触发器和寄存器
(1)掌握锁存器、触发器和寄存器的门级描述以及行为级描述;
(2)掌握组合逻辑电路和基本存元件描述方式不同;
(3)学习QuartusII功能仿真和时序仿真方法;
(4)学习QuartusII的RTLViewer和TechnologyViewer工具的使用;
1.