基于DE2-115开发板的FPGA入门设计实验.doc
《基于DE2-115开发板的FPGA入门设计实验.doc》由会员分享,可在线阅读,更多相关《基于DE2-115开发板的FPGA入门设计实验.doc(26页珍藏版)》请在三一文库上搜索。
1、基于DE2-115开发板的FPGA入门设计实验1、 Lab1: 4位加法器、减法器的设计1.1 摘要 在文件add_sub里面的工程文件operation_4.v为顶层文件,该顶层文件包含了三个子模块,分别为数码管显示模块,4位带进位的二进制加法器模块和4位带借位的二进制减法器模块,最后通过DE2-115开发板显示实验结果。1.2 程序1) add_4bits.v 加法器moduleadder_4bits(inputclk,inputrst_n,input3:0x,input3:0y,output reg3:0sum,output regcarry_out /溢出位);always(posed
2、ge clk or negedge rst_n)beginif(!rst_n)carry_out, sum = 0;elsecarry_out, sum = x + y;endendmodule2) substractor_4bits.v减法器modulesubtractor_4bits(inputclk,inputrst_n,input3:0x,input3:0y,outputreg3:0sub,outputregborrow_out);always(posedge clk or negedge rst_n)beginif(!rst_n)borrow_out, sub = y)borrow_
3、out, sub = 1b0, x - y;elseborrow_out, sub = 1b1, x - y;endendendmodule3)seg7_lut.v 数码管显示译码模块module Seg7_lut(input3:0iDIG,outputreg6:0oSEG);always (iDIG)begincase(iDIG)4h1: oSEG = 7b1111001;/ -t-4h2: oSEG = 7b0100100; / | |4h3: oSEG = 7b0110000; / lt rt4h4: oSEG = 7b0011001; / | |4h5: oSEG = 7b001001
4、0; / -m-4h6: oSEG = 7b0000010; / | |4h7: oSEG = 7b1111000; / lb rb4h8: oSEG = 7b0000000; / | |4h9: oSEG = 7b0011000; / -b-4ha: oSEG = 7b0001000;4hb: oSEG = 7b0000011;4hc: oSEG = 7b1000110;4hd: oSEG = 7b0100001;4he: oSEG = 7b0000110;4hf: oSEG = 7b0001110;4h0: oSEG = 7b1000000;endcaseendendmodule1.3 结
5、果 本设计通过Verilog HDL硬件描述语言。描述加法、减法算法,包括了进位以及借位,最终可以在实验板上观察结果,验证了算法的正确性。拨码开关SW7:0输入两位计算值,SW17为复位按键,如下图所示:该实验结果显示的是7+b=02,进位位在LEDG0显示,7-b=12,借位位在LEDR0显示。计算过程如下:2、 Lab2: 三位二进制乘法器的设计2.1 摘要 在文件mult_3bits里面的工程文件operation_4.v为顶层文件,该顶层文件包含了两个子模块,分别为数码管显示模块和三位二进制乘法器模块,最后通过DE2-115开发板显示实验结果。2.2 程序1) mult_3bits.v
6、 乘法器modulemult_3bits(input2:0x,input2:0y,output5:0 mult_out);wire2:0temp0 = y0 ? x : 3d0;wire2:0temp1 = y1 ? x : 3d0;wire2:0temp2 = y2 ? x : 3d0;assign mult_out = temp0 + (temp1 1) + (temp2 2);endmodule2)seg7_lut.v文件与Lab1中的相同2.3 结果 本设计通过Verilog HDL硬件描述语言,通过移位以及加法,实现三位二进制乘法功能,最终可以在实验板上观察结果,验证了算法的正确性。
7、拨码开关SW6:0输入两位计算值,SW17为复位按键,如下图所示:3、 Lab3: 序列检测器的设计3.1 摘要 通过Verilog HDL硬件描述语言,按照要求,设计一个序列检测器,在检测到4b1111序列后输出高电平标志位,反之输出低电平。电路在Quartus II中设计,最后通过波形图仿真和开发板得出实验结果。3.2 程序sequence_detect.v 序列检测器modulesequence_detect(inputclk,inputrst_n,inputdin_en,/H vaildinputdin,outputregdout);/capture the posedge of di
8、n_en for data receiveregdin_en_r0,din_en_r1;always(posedge clk or negedge rst_n)beginif(!rst_n)begindin_en_r0 = 0;din_en_r1 = 0;endelsebegindin_en_r0 = din_en;din_en_r1 = din_en_r0;endendwiredin_flag = (din_en_r1 & din_en_r0) ? 1b1 : 1b0;/din_en的值由0变1时,din_flag的值变为高电平维持一个时钟周期(脉冲边沿检测)/din_en作为数据输入的标志
9、/-reg3:0sequence_data;/序列数据寄存器always(posedge clk or negedge rst_n)beginif(!rst_n)beginsequence_data = 0;/初始化时寄存器状态dout = 0; /寄存器输出为0endelse if(din_flag)/din_en上升沿,din_flag=1beginsequence_data = sequence_data2:0, din; /串行输入dout = (sequence_data = 4b1111) ? 1b1 : 1b0;endendendmodule3.3 结果 该程序中定义可串行输入接
10、口:din,串行输出接口dout,同时添加了数据输入标志信号din_en,以指示数据的输入。串行数据输入序列通过移位操作,存入与sequence_data中,同时检测sequence_data,当出现4b1111时,dout输出1表示检测到了要求的序列。其中仿真结果如下:4、 Lab4: 变模计数器的设计4.1 摘要 在设计一个计数器的前提下,要求模值可变,即计算器最大值可变。因此,这要求能动态改变计数器的模值,同时在数码管上实时显示输出结果。在文件variable_counter里面的工程文件variable_counter.v为顶层文件,该顶层文件包含了一个数码管显示子模块,最后通过DE2
11、-115开发板显示实验结果。4.2 内容1) 变模的实现 模值可以通过选择,也可以通过输入,来动态改变。在该实验中,通过一个拨码开关SW0来选择模值“16”或者“64”,实现选择通过一个选择语句即可实现。如下语句:wire7:0max_vaule = SW0 ? 8d64 : 8d16;2) 输出显示 本实验通过2个7段数码管来显示数据。同时为了肉眼能看到数据的变化,通过计数,实现0.25S的使能标志定点时间,以此标志位来作为计数器的计数周期,保证肉眼可以看得到数据的变化。4.3 程序1) variable_counter.v 变模计数器顶层模块modulevariable_counter(i
12、nputclk, /CLOCK_50inputrst_n, /SW17input 0:0 SW, /SW0控制变模output6:0HEX0, /ge_dataoutput6:0HEX1 /shi_data);wire7:0max_vaule = SW0 ? 8d64 : 8d16;reg23:0cnt;always(posedge clk or negedge rst_n)beginif(!rst_n)cnt = 0;elsecnt = (cnt = 24d12500000) ? 24d0 : cnt + 1b1;endwiredelay02_flag = (cnt = 24d1250000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DE2 115 开发 FPGA 入门 设计 实验
链接地址:https://www.31doc.com/p-6059519.html