ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:683.67KB ,
资源ID:19904996      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19904996.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验报告北邮电子线路设计与仿真实验二一位8421全加器设计VHDL输入Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验报告北邮电子线路设计与仿真实验二一位8421全加器设计VHDL输入Word文档下载推荐.docx

1、1,那么输出col输出信号将发生变化,Out1变为0,则col0col3输出分别为“1110”。可通过行扫描码和列输出码来获得分时扫描的键盘按压信号。只要扫描时间适当,就可得到按键的按压情况。3、键盘输入一个完整的键盘控制程序应解决以下任务:(1)检测有无按键按下(2)有键按下,在无硬件去抖得情况下,应有软件延时除去抖动影响(3)键扫描程序(4)将键编码转换成相应键值整个设计程序包括三个模块:时钟分频、键盘扫描和键译码转换。为了显示,还必须在顶层添加显示部分。 由于使用的外部时钟频率为50MHz,这个频率对扫描来说太高,所以这里需要一个分频器来分得适合键盘扫描使用的频率。三、程序框图(流程图)

2、四、源程序&仿真波形 该系统主要由以下几个模块组成:1.时钟分频模块由于主芯片提供的频率赫兹与实际应用的频率不一样,所以必须将实验箱提供的时钟信号分频达到利用目的。代码如下:entity clk_devider is Port ( clkin : in STD_LOGIC; clkout : out STD_LOGIC);end clk_devider;architecture Behavioral of clk_devider is signal Counter: Integer RANGE 1 TO 5000; SIGNAL Clk:std_logic;beginPROCESS(clkin

3、) BEGIN IF (clkinevent AND clkin =1) THEN IF Counter= 5000 THEN Counter = 1; Clk=NOT Clk; ELSE Counter=Counter +1; END IF; END IF;END PROCESS; clkout =Clk;end Behavioral;仿真波形:由于分频频率过低,仿真波形不太明显,所以将修改counter=5000改为counter=5.2.键盘扫描模块 由于需要键盘输入数值,所以需要扫描键盘数值。键盘模型如图:键盘扫描原理:如果列线有输入为低电平,则代表低电平信号所在的行和出现低电平的列的

4、交点处有按键按下。同时定义两个key_value存储键盘先后输入的两个数值,并且相加输出。键盘扫描代码:entity key_scan is Port ( clk : t_out:out STD_LOGIC_VECTOR (1 downto 0); key_in : in STD_LOGIC_VECTOR (5 downto 0); key_out : out STD_LOGIC_VECTOR (3 downto 0); key_value_tmp : out STD_LOGIC_VECTOR (4 downto 0); key_value : out STD_LOGIC_VECTOR (4

5、downto 0);end key_scan;architecture Behavioral of key_scan is signal scan ,scan_tp:STD_LOGIC_VECTOR(3 downto 0); signal flag:integer range 1 to 4; signal en_tp,en_old,en:STD_LOGIC; signal key_value_lock,key_value_lock1,key_value_lock_tp,key_value_lock_tp1:STD_LOGIC_VECTOR (9 downto 0); signal light_

6、out,light_out1 : signal cnt_low:STD_LOGIC_VECTOR (9 downto 0):=0000000000; signal cnt_high: key_out=scan; key_value=0&light_out;-key_in&scan; key_value_tmplight_out1; t_out(0)=en; t_out(1) process(clk) begin if (clkevent and clk=)then if(flag=1)then scan1110 flag=2; elsif(flag=2)then scan1101=3; els

7、if(flag=3)then1011=4; elsif(flag=4)then0111=1; end if; end if; end process; if(key_in(0) and key_in(1) and key_in(2) and key_in(3) and key_in(4) and key_in(5)= )then scan_tp en_tp -key_value_lock1=key_value_lock; key_value_lock_tp=key_in& if(key_in(0) and key_in(1) and key_in(2) and key_in(3) and ke

8、y_in(4) and key_in(5)= and scan_tp=scan )then if(en_tp= if(cnt_low100)then cnt_low=cnt_low+1; cnt_high); else if(cnt_high cnt_high=cnt_high+1; cnt_low end if; en_old 50 )then en 50 )then process(clk) if(en_old= and en= key_value_lock_tp1=key_value_lock_tp; if(en_old= )then key_value_lock1 key_value_

9、locklight_outZZZZZZZZ when others =NULL; end case; case(key_value_lock1) islight_out1键盘扫描仿真波形:仿真图表示键盘输入数字1.3.加法模块键盘输入两个值后,将之转换成8421码制,并且相加,同时需要判断是否进位点亮十位的数码管。加法模块代码:entity add is anum : in STD_LOGIC_VECTOR (4 downto 0); bnum : sum : cout :end add;architecture Behavioral of add is signal result_tmp:

10、std_logic_vector(4 downto 0); signal result_tmpa: sum=result_tmp(3 downto 0); if (clk result_tmpa01010 result_tmp=result_tmpa- cout else result_tmp=result_tmpa; end if;加法模块仿真波形:图中表示先后输入1和6,并且最后求和赋给了result=7.LED显示模块:键盘输入的数字需要在八段数码管显示,并且最后需要显示相加的和。显示代码如下: entity led is Port ( key_in : in STD_LOGIC_VEC

11、TOR (3 downto 0); light_out : out STD_LOGIC_VECTOR (7 downto 0); clk : in STD_LOGIC);end led;architecture Behavioral of led isprocess(clk) case(key_in) is00111111000001100101101101001111011001100110110101111101000001110111111101101111 end case;七、实验中遇到的问题和解决方法VHDL语言与我们所了解的C、C+很不一样,他的所有进程都是并行的,当然还有其他很

12、多不一样的地方,所有可能接受起来有些吃力,导致我们做了好几次都没有弄出来,在老师给了重点地方的代码之后还是没弄出来,直到老师给了完整的程序之后才算是可以运行。仿真的时候由于不会设置I/O口的状态,而用相对简单的Quartus实现的。这次试验不尽如人意。在实验中也遇到了很多问题,感觉自己解决问题的能力很弱,就像找不着对应的I/O口,其实可以通过自己的能力解决的,但是因为有老师在,就觉得有指望,所以造成了自己的这种惰性,以后一定要努力克服自己的这种性格。据我了解到,VHDL是现在很有用的一门语言,很多专业都在学习,但是以我个人观点来看,这门课应该至少设置六学分,且设置为必修课。结束了这门课以后我们也应当在课下多多实践。尽量掌握好这样一种很有用的工具。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1