综合课程设计——两位十进制数加法实验报告.docx

上传人:h**** 文档编号:26525902 上传时间:2022-07-18 格式:DOCX 页数:9 大小:14.06KB
返回 下载 相关 举报
综合课程设计——两位十进制数加法实验报告.docx_第1页
第1页 / 共9页
综合课程设计——两位十进制数加法实验报告.docx_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《综合课程设计——两位十进制数加法实验报告.docx》由会员分享,可在线阅读,更多相关《综合课程设计——两位十进制数加法实验报告.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、综合课程设计两位十进制数加法实验报告 标 准 实 验 报 告学生姓名: 指导教师: 一、实验室名称: 二、实验项目名称:综合课程设计两位十进制数加减法的实现 三、实验原理: 1、FPGA的矩阵键盘 开发板上设计了行列式矩阵编码键盘,规模为4*4,可作为外部输入。 其对应管脚分布如下: 2、自由按键电路 KEY1 对应P102,KEY2 对应P101。 3、拨码开关 板上设计了一组8 位的拨码开关,ON为低电平,OFF为高电平。拨码开关可供用户输入一些高低电平。 4、键盘扫描及数码显示 对键盘的扫描分为三步,首先检测由于没有按键按下,然后在有按键按下的情况下,先进行行扫描找出对应按键是哪行按下,

2、接着是对应的列扫描最终确定是哪一个按键。给对应的按键赋上预先设定的值连接到数码管便能控制数码管显示。我们需要如下几个信号来实现编写这一部分程序:key_code,用来控制数码管显示相应的值;row,用来控制行扫描;column,用来控制列扫描。 要利用8个数码管显示8个不同的数字,由于此为动态显示,送到每一段的值都一样,利用显示使能en,来控制亮灭,同时提高显示时钟频率,可以实现8位数码管的不同值显示。 5、去抖 利用普通的CASE语句编写的程序会出现按键按下值会一直递增的现象,我们需要一个优化的能够实现对长按下的键只记一次。需要重新自己设定一个去抖参数。个人思想如下:设定去抖参数qudou,

3、当没有按键按下时其自动置为0,在检测按键时如果同时检测都qudou=0才做对应键值加1的操作且同时把去抖参 数置为1;如此便能够实现。 6、两位十进制加减法实现原理 加数和被加数的输入由矩阵键盘扫描完成,具体实现是,利用状态机,一个状态来进行加数的输入然后跳转到另一状态,进行被加数的输入,两个数输入完成后,下一状态为显示结果。同时需要一位来控制是做加法还是减法。 状态机设计,利用VHDL设计有限状态机分为两个定义,三个进程。两个定义分别用来定义状态变量以及状态机的状态;三个进程分别用来描述状态寄存器状态,状态转移进程以及状态输出。 7、FPGA硬件管脚的配置 在实现时首先要做的事是管脚的配置,

4、根据程序的功能来配置管脚从而可以从实验板上观察到所需的状态。注意每一段的对应以及功能的设置。 四、实验目的: 1、进一步熟悉基于FPGA的硬件编程实现; 2、掌握如何实效编程; 3、熟悉程序基于ISE的仿真以及改错; 4、掌握编程驱动FPGA的键盘扫描以及数码显示的方法; 5、实现自主创新,编程实现自己的想法,并熟悉利用FPGA硬件实现编程; 6、进一步实践前两次实验的理论,全自主掌握管脚配置,程序调试下载并 运行,提高动手能力。 五、实验内容: 编写程序实现两位十进制数的加减法并用数码管显示,具体功能如下: 1、手动从键盘输入两个数; 2、具有清零功能; 3、能够实现加减法互换。 六、实验器

5、材(设备、元器件): FPGA实验板一块、下载线一套、PC机一台 七、实验步骤: 1、打开桌面EDA文件夹中的ISE软件,并新建一个ADD_SUB工程; 2、在“Sources in Project”子窗口中右击,选择Add Source ,添加 VHDL设计文件,编写程序; 3、保存并进行语法检错,若有错误返回修改,直到没有错误提示为止; 4、连接好FPGA和下载线套装; 5、进行管脚配置,在“Sources in Project”子窗口中右击,选择Add Source ,选择添加 .ucf 文件,打开所添加的 .ucf 文件在对应的地 方输入管脚即可,或者是打开工程文件夹,找到ADD_SU

6、B.ucf文件以文 本文档方式打开,在里面编写形如:NET clk LOC = p18 ;(“”中 的为信号名称,=后面的为对应管脚)的管脚配置参数,编写完成后保存。 6、把程序进行仿真并载入到FPGA实验板上观察现象是否与理论一致; 7、若不符合则,返回修改程序,直到现象符合。 八、实验数据及结果分析: 1、实验程序: A、主程序部分 library ieee; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity design is port( c

7、lk : in std_logic; rst : in std_logic; row : out std_logic_vector(3 downto 0); column : in std_logic_vector(3 DOWNTO 0); dataout : out std_logic_vector(7 DOWNTO 0); en : out std_logic_vector(7 downto 0); add_or_sub : in std_logic; stage : in std_logic); end design; architecture arch of design is com

8、ponent xiaodou port ( clk : in std_logic; rst : in std_logic; data_in : in std_logic; data_out : out std_logic); end component; component display port ( num : in std_logic_vector(12 downto 0); en : out std_logic_vector(7 downto 0); dataout : out std_logic_vector(7 downto 0); clk : in std_logic; rst

9、: in std_logic); end component; component keyscan port( clk : in std_logic; rst : in std_logic; row : out std_logic_vector(3 downto 0); column : in std_logic_vector(3 DOWNTO 0); cnt : in std_logic_vector(1 downto 0); dat1 : out std_logic_vector(3 downto 0); dat2 : out std_logic_vector(3 downto 0); e

10、nd component; signal cnt : std_logic_vector(1 downto 0); signal dat1 : std_logic_vector(3 downto 0); signal dat2 : std_logic_vector(3 downto 0); signal row_temp : std_logic_vector(3 downto 0); signal dat : std_logic_vector(4 downto 0); signal stage_x : std_logic; signal num : std_logic_vector(12 dow

11、nto 0); begin i1:xiaodou port map(clk,rst,stage,stage_x); process(clk,rst) begin if(rst = 0) then cnt state state state state state state state state state 1001) then num1(7 downto 4) 1001) then num2(7 downto 4) 11101) then num3(7 downto 4) 10011) then num3(7 downto 4) 01001) then num3(7 downto 4) e

12、n en en en en en en en NULL; end case; end process; process(dataout_temp) begin case dataout_temp is WHEN 0000 = dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout = 11000000; end case; end process; end arch; D、按键扫描模块 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity keyscan is port( clk : in std_logic; rst : in std_logic;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁