EDA技术课程设计-基于FPGA的八位加法器.doc

上传人:scccc 文档编号:11129642 上传时间:2021-07-04 格式:DOC 页数:20 大小:1.12MB
返回 下载 相关 举报
EDA技术课程设计-基于FPGA的八位加法器.doc_第1页
第1页 / 共20页
EDA技术课程设计-基于FPGA的八位加法器.doc_第2页
第2页 / 共20页
EDA技术课程设计-基于FPGA的八位加法器.doc_第3页
第3页 / 共20页
EDA技术课程设计-基于FPGA的八位加法器.doc_第4页
第4页 / 共20页
EDA技术课程设计-基于FPGA的八位加法器.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《EDA技术课程设计-基于FPGA的八位加法器.doc》由会员分享,可在线阅读,更多相关《EDA技术课程设计-基于FPGA的八位加法器.doc(20页珍藏版)》请在三一文库上搜索。

1、课程实训报告 课课 程程 名名 称称 EDA 技术 设设 计计 题题 目目 基于 FPGA 的八位加法器 院院 系系 名名 称称 机械电子工程学院 专专 业业 班班 级级 电子信息工程 2014 级 姓姓 名名 学学 号号 成成 绩绩 指指 导导 教教 师师 2016 年 12 月 目目 录录 1、设计目的、要求.- 2 - 1.1、设计目的.- 2 - 1.2、系统设计要求.- 2 - 2、设计原理及相关硬件.- 3 - 2.1、系统设计方案及原理.- 3 - 2.2、硬件原理.- 3 - 3、主要模块设计.- 5 - 3.1、模块 Key-led.- 5 - 3.2、模块 Adder.-

2、6 - 4、系统编译及仿真过程.- 6 - 4.1、系统编译.- 6 - 4.2、仿真.- 7 - 5、硬件验证过程和分析.- 8 - 5.1、引脚设置和保护.- 8 - 5.2、硬件下载.- 8 - 5.3、硬件测试结果及分析.- 9 - 6、实验参考程序.- 9 - 6.1、模块 key_led.- 9 - 6.2、模块 adder4b.- 13 - 6.3、模块 adder8b.- 14 - 总 结.- 15 - 参考文献.- 0 - 附 录.- 1 - 1 1、设计目的、要求、设计目的、要求 1.11.1、设计目的、设计目的 (1)了解并掌握一般设计方法,具备初步的独立设计能力; (2

3、)掌握用 VerilogHDL 语言程序的基本技能; (3)提高综合运用所学的理论知识独立分析和解决问题的能力; (4)进一步掌握 EDA 技术的开发流程; (5)学习较复杂的数字系统设计方法。 (6)掌握 Quartus软件系统的安装及基本使用方法。 (7)掌握 EDA 技术的层次化设计方法。 (8)掌握原理图输入方法。 (9)掌握 8 位并行加法器的设计原理。 1.21.2、系统设计要求、系统设计要求 设计一个 8 位二进制并行加法器,它由两个 4 位二进制并行加法器级联而 成。要求加数、被加数、和都在数码管上以十进制数显示出来。系统提供 50MHZ 频率的时钟源。 工具介绍: 软件:Qu

4、artus,是一综合设计环境,被称为 SOPC(可编程单片系统) 升级环境,它承接了原来 Maxplus 3的全部设计功能和器件对象外还增加了 许多新功能和新的 FPGA 器件系列,包括一些适用于 SOPC 开发的大规模器件。 相对于上述 EDA 工具,Quartus含有许多更具特色和更强的实用功能,大致有 以下几点: (1)Quartus与 MATLAB/Simulink 和 Altera 的 DSP Builder,以及第三 方的综 合器和仿真器相结合,用于开发 DSP 硬件系统; (2)Quartus与 SOPC Builder 结合用于开发 Nios 嵌入式系统; (3)Quartus

5、含实时调试工具、嵌入式逻辑分析式 Signal Tap。 (4)Quartus含一种十分有效的逻辑设计优化技术,即设计模块在 FPGA 中指定区域内的逻辑锁定功能,Logic Lock 技术。 硬件:计算机;MagicSOPC 创新教学实验开发平台 EL 教学实验箱 核心板 PowerSOPC-2C35 上所用 FPGA 为 Altrea 公司 Cyclone II 系列的 EP2C35F672C8,包含 33216 个逻辑单元(LEs),483840 bits 的片上 RAM,还 有 475 个用户可用 I/O 口,封装为 672-PinFPGA。 2 2、设计原理及相关硬件、设计原理及相关

6、硬件 2.12.1、系统设计方案及原理、系统设计方案及原理 加法器是数字系统中的基本逻辑器件。多位加法器的构成有两种方式:并 行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快; 串行进位方式是将全加器级联构成多位加法器。在数字信号处理的快速运算电 路中常常用到多位数字的加法运算,这时需要用到并行加法器。并行加法器比 串行加法器快得多,电路结构也不太复杂。本实验中的 8 位加法器采用两个 4 位二进制并行加法器级联而成。该设计的顶层原理图如图 2.1 所示,主要由 Key_led 和 adder8b 两个模块组成。 2.22.2、硬件原理、硬件原理 1、按键、LED 硬件原理

7、 主板上具有 8 个独立按键和 8 个独立 LED,电路如图 2.2 所示,电路中 图 2-1 逻辑原理图 低电平表示按键按下 , 低 电 平 点 亮 LED。 图 2-2 按键及 LED 电路 2、七段动态显示数码管硬件原理 主板上七段数码管采用了两种方式,一种是动态显示,另一种是静态显示。 动态显示的电路如图 2.3 所示,RP18 和 RP20 是段码上的限流电阻,位码由 于电流较大,采用了三极管驱动。 从电路可以看出,数码管是共阳的,当位码驱动信号为 0 时,对应的数码 管才能操作;当段码驱动信号为 0 时,对应的段码点亮。 图 2-3 七段动态显示数码管电路 3 3、主要模块设计、主

8、要模块设计 3.13.1、模块、模块 Key-Key-ledled 1、功能说明 按 Key1- Key4,对应的数码管 1-4 的数加 1,并由 hex【15:0】输出,按下 Key5- Key8,对应的发光二极管 LED1-LED4 的状态改变一次,并由 bin【3:0】 输出。LED5-LED8 的状态由 ledin【3:0】决定,数码管 5-8 的显示数由 data【15:0】决定. 图 3-1 按键原理图 2、模块说明: Clock:系统时钟输入(50MHz); Key【7:0】:按键输入(Key1- Key8); ledin【3:0】:LED 指示输入端(分别接 LED5- LED

9、8,高电平“1”LED 亮) ; data【15:0】:数码管显示输入端(经七段译码后送入数码管 5-8 显示 (data【15:12】):数码管 5,data【11:8】:数码管 2,hex【7:4】:数码 管 3,hex【,3:0】:数码管 4); bin【3:0】:输入 4 位二进制,其值由 LED4-LED1 对应的指示(高电平 “1”LED 亮); hex【15:0】:输入 4 组 4 位二进制,其值经七段译码后送至数码管 1-4 显 示(hex【15:12】: 数码管 1,hex【11:8】:数码管 2,hex【7:4】:数码管 3,hex【3:0】:数码管 4); Seg【7:0

10、】:数码管输出端;Dig【7:0】:数码管位输出。 3.23.2、模块、模块 AdderAdder 图 3-2 4 4、系统编译及仿真过程、系统编译及仿真过程 4.14.1、系统编译、系统编译 1)启动 Quartus II 建立一个空白工程,然后命名为 adder8b.qpf 2)新建 Verilog HDL 源程序文件 adder4b.v,输入程序代码并保存,进行综合 编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。 图 4-1 编译 3)新建 Verilog HDL 源程序文件 adder8b.v,输入程序代码并保存,进行综合 编译,若在编译过程中发现错误,则找出并更正

11、错误,直至编译成功为止。 图 4-2 编译 4.24.2、仿真、仿真 4) 建立波形仿真文件(adder8.vwf)并进行功能仿真验证。 图 4-3 波形仿真图 说明: a8+b8+c8=s8 ,两个加数(a8、b8)相加等于输出 (s8), 有 进位(c8)加上进位 (c8)再输出,即有输出进位(co8)又有进位(c8)时 FF+FF+1=FF;无输出进位(co8)无进位(c8)时,00+00=00. 5 5、硬件验证过程和分析、硬件验证过程和分析 5.15.1、引脚设置和保护、引脚设置和保护 1、选择目标器件并对相应的引脚进行锁定,这里选择的器件为 altera 公 司 cycloneII

12、 系列的 EP2C35F672C8 芯片,引脚锁定方法如图 5-1 所列,将未使 用的引脚设置为三态输入 图 5-1 引脚锁定 2、将 adder.bdf 设置为顶层实体,重新编译。 图 5-2 编译 5.25.2、硬件下载、硬件下载 将程序下载到 FPGA 器件中,按下 key1-Key5 观察数码管的状态,是否与设 计相符。 图 5-3 硬件下载 5.35.3、硬件测试结果及分析、硬件测试结果及分析 图 5-4 功能图 说明:十六进制 15 加上十六进制 49 等于十六进制的 5E,即实现八位硬件 加法器功能。 6 6、实验参考程序、实验参考程序 6.16.1、模块、模块 keykey_l

13、ed_led module key_led(clock,key,led,hex,bin,seg,dig,ledin,data); inputclock;/系统时钟(50MHz) input7:0key;/按键输入(KEY1KEY8) output 7:0led;/LED 输出(LED1LED8) output 15:0 hex;/4 位 16 进制数输出(在数码管 14 显示) output 3:0bin;/4 位 2 进制数输出(在 LED1LED4 显示) output 7:0seg;/数码管段码输出 output 7:0dig;/数码管位码输出 input3:0ledin;/LED 显示

14、输入(在 LED5LED8 显 示) input15:0 data;/数码管显示输出(在数码管 58 显示) reg 15:0 hex_r; reg 3:0bin_r; reg 7:0seg_r; reg 7:0dig_r; reg 16:0 count;/时钟分频计数器 reg 7:0dout1,dout2,dout3,buff;/消抖寄存器 reg 2:0cnt3; /数码管扫描计数器 reg 3:0disp_dat; /数码管扫描显存 wirediv_clk;/分频时钟,用于消抖和扫描 wire7:0key_edge;/按键消抖输出 /信号输出 assign hex = hex_r; a

15、ssign bin = bin_r; assign seg = seg_r; assign dig = dig_r; assign led = ledin,bin_r; /时钟分频部分 always (posedge clock) begin if (div_clk) count = 17d0; else count 17d125000); /按键消抖部分 always (posedge clock) begin if(div_clk) begin dout1 = key; dout2 = dout1; dout3 = dout2; end end /按键边沿检测部分 always (pose

16、dge clock) begin buff = dout1 | dout2 | dout3; end assign key_edge = (dout1 | dout2 | dout3) /4 位 16 进制数输出部分 always (posedge clock)/按键 1 begin if(key_edge0) hex_r15:12 = hex_r15:12 + 1b1; end always (posedge clock)/按键 2 begin if(key_edge1) hex_r11:8 = hex_r11:8 + 1b1; end always (posedge clock)/按键 3

17、 begin if(key_edge2) hex_r7:4 = hex_r7:4 + 1b1; end always (posedge clock)/按键 4 begin if(key_edge3) hex_r3:0 = hex_r3:0 + 1b1; end /4 位 2 进制数输出部分 always (posedge clock)/按键 5 begin if(key_edge4) bin_r0 = bin_r0; end always (posedge clock)/按键 6 begin if(key_edge5) bin_r1 = bin_r1; end always (posedge

18、clock)/按键 7 begin if(key_edge6) bin_r2 = bin_r2; end always (posedge clock)/按键 8 begin if(key_edge7) bin_r3 = bin_r3; end /数码管扫描显示部分 always (posedge clock) /定义上升沿触发进程 begin if(div_clk) cnt3 = cnt3 + 1b1; end always (posedge clock) begin if(div_clk) begin case(cnt3)/选择扫描显示数据 3d0:disp_dat = hex_r15:12

19、;/第一个数码管 3d1:disp_dat = hex_r11:8;/第二个数码管 3d2:disp_dat = hex_r7:4;/第三个数码管 3d3:disp_dat = hex_r3:0;/第四个数码管 3d4:disp_dat = data15:12;/第五个数码管 3d5:disp_dat = data11:8;/第六个数码管 3d6:disp_dat = data7:4;/第七个数码管 3d7:disp_dat = data3:0;/第八个数码管 endcase case(cnt3)/选择数码管显示位 3d0:dig_r = 8b01111111;/选择第一个数码管显示 3d1:

20、dig_r = 8b10111111;/选择第二个数码管显示 3d2:dig_r = 8b11011111;/选择第三个数码管显示 3d3:dig_r = 8b11101111;/选择第四个数码管显示 3d4:dig_r = 8b11110111;/选择第五个数码管显示 3d5:dig_r = 8b11111011;/选择第六个数码管显示 3d6:dig_r = 8b11111101;/选择第七个数码管显示 3d7:dig_r = 8b11111110;/选择第八个数码管显示 endcase end end always (disp_dat) begin case(disp_dat)/七段译码

21、 4h0:seg_r = 8hc0;/显示 0 4h1:seg_r = 8hf9;/显示 1 4h2:seg_r = 8ha4;/显示 2 4h3:seg_r = 8hb0;/显示 3 4h4:seg_r = 8h99;/显示 4 4h5:seg_r = 8h92;/显示 5 4h6:seg_r = 8h82;/显示 6 4h7:seg_r = 8hf8;/显示 7 4h8:seg_r = 8h80;/显示 8 4h9:seg_r = 8h90;/显示 9 4ha:seg_r = 8h88;/显示 a 4hb:seg_r = 8h83;/显示 b 4hc:seg_r = 8hc6;/显示 c

22、4hd:seg_r = 8ha1;/显示 d 4he:seg_r = 8h86;/显示 e 4hf:seg_r = 8h8e;/显示 f endcase end endmodule 6.26.2、模块、模块 adder4badder4b module adder4b(c4, a4, b4, s4, co4); input c4; input 3:0 a4; input 3:0 b4; output 3:0 s4; output co4; wire 4:0 s5; wire 4:0 a5; wire 4:0 b5; assign a5 = 1b0, a4; assign b5 = 1b0, b4

23、; assign s5 = a5 + b5 + c4; assign s4 = s53:0; assign co4 = s54; endmodule 6.36.3、模块、模块 adder8badder8b module adder8b(c8, a8, b8, s8, co8); input c8; input 7:0 a8; input 7:0 b8; output 7:0 s8; output co8; wire sc; adder4b u1(.c4(c8), .a4(a83:0), .b4(b83:0), .s4(s83:0), .co4(sc); adder4b u2(.c4(sc),

24、.a4(a87:4), .b4(b87:4), .s4(s87:4), .co4(co8); endmodule 总总 结结 通过这次实训设计,使我懂得了理论与实际相结合是很重要的,只有理论 知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出 结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 从仿真波形可以看出,本设计符合 8 位加法器的要求,由于是时序仿真,我们 可以看到输出总有些许延迟,而且能看到输入改变的时候,输出会产生毛刺。 通过本次实验,初步学习了 Quartus II 软件的使用,应用了 Verilog HDL 语 言进行了编程,巩固了理论知

25、识。由于课前没有预习,造成上手有点慢,下次 上课前一定好好预习。 参考文献参考文献 1.潘松 黄建业EDA 技术与 VHDL清华大学出版社 2.康华光电子技术基础数字部分高等教育出版社 3.王锁平电子设计自动化(EDA)教程 电子科技大学出版社 4.张文希 谢明华 EDA 技术实验指导书 5.张明Verilog HDL 实用教程电子科技大学出版社 附附 录录 课课程程实实训训任任务务书书 姓名: 学号: 指导教师: 课题名称基于基于 FPGA 的的 8 位加法器的设计位加法器的设计 实 训 内 容 及 要 求 1、实训目的:(1)了解并掌握一般设计方法,具备初步的独立设计能力; (2)掌握用

26、Verilog HDL 语言程序的基本技能;(3)提高综合运用所学的理 论知识独立分析和解决问题的能力;(4)进一步掌握 EDA 技术的开发流程; (5)学习较复杂的数字系统设计方法。 2、系统设计要求:设计一个 8 位二进制并行加法器,它由两个 4 位二 进制并行加法器级联而成。要求加数、被加数、和都在数码管上以十进制数 显示出来。系统提供 50MHZ 频率的时钟源。 3、最后就课程实训本身提交一篇课程实训说明书。 实 训 工 作 量 1、Verilog HDL 语言程序设计; 2、编译仿真; 3、在实验装置上进行硬件测试,并进行演示; 4、提交一份完整的课程实训资料,包括设计原理、程序设计

27、、编译仿 真、硬件测试、调试过程,参考文献、设计总结等。 起止日期(或时间量) 设计内容(或预期目标)备注 第一天课题介绍,答疑,收集材料 第二天设计方案论证 第三天设计 VerilogHDL 语言程序 第四天在实验装置上进行硬件测试,并进行演示 实 训 进 度 安 排 第五天编写实训报告 萍乡学院课程实训成绩评价表萍乡学院课程实训成绩评价表 课程名称EDA 技术 题目名称基于 FPGA 的 8 位加法器的设计 学生姓名学号 指导教 师姓名 序号评价项目指 标满分评分 1 工作量、工作态 度和出勤率 按期圆满的完成了规定的任务,难易程度和工作量 符合教学要求,工作努力,遵守纪律,出勤率高, 工作作风严谨,善于与他人合作。 20 2课程实训质量 课程实训过程选题合理,计算过程简练准确,分析 问题思路清晰,结构严谨,文理通顺,撰写规范, 图表完备正确。 20 3程序和工程 工程复杂程度、程序准确性和难易程度,编程过程 中解决问题的能力。 40 4硬件测试设计的硬件和程序运行效果良好。20 分工 程序工程及硬件测试部分: 课程实训报告撰写部分: 总分 评语: 指导教师: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1