收藏 分销(赏)

接口实验-VHDL编程-实验报告.doc

上传人:仙人****88 文档编号:7376343 上传时间:2025-01-01 格式:DOC 页数:6 大小:56KB 下载积分:10 金币
下载 相关 举报
接口实验-VHDL编程-实验报告.doc_第1页
第1页 / 共6页
接口实验-VHDL编程-实验报告.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
短学期 接口实验 VHDL编程 实验任务: 用VHDL编程实现十六进制的计数显示。并通过仿真或观察波形验证设计电路的正确性。最后在SE-5M型EDA实验开发系统上执行验证结果。 实验设备: SE-5M 型EDA实验开发系统,Maxplus 9.23 。 实验原理: 首先用MAxplus编写程序,然后进行编译,进行管叫设定,最后将程序下再到实验版的下载板上验证程序。 实验用到了以下管角: 时钟信号CP1(CP2): 进行时钟信号设定。总共有12个信号源,根据所需的时钟频率,跳线设置。 键盘扫描相应管角:Se-5M中有一个4X4的矩阵键盘,其连接图如下,键盘矩阵是与89C51和管理芯片(F7128)直接相连,而通过管理芯片键盘阵列实现了与CPLD间接相连,他是通过KEY来实现的。当CZ1的KEY置ON时,CPLD可与89C51的P1口相连或者键盘阵列相连,当CZ1D的KEY置OFF时,89C51的P1口及键盘阵列与CPLD断开。当CPLD和小键盘相连时H1-H4用于发出扫描信号,V1-V4为接收扫描信号,即H1-H4为输出管角,V1-V4为输入管角。 在具体在操作中,一个作为行扫描,一个作为列扫描,从而最终确定用户所按的键。 CPLD 管理芯片 89C51 (p1口) RAM 键盘阵列 静态显示数码管M1-M2:用来选择最终的显示结果在哪一数码管上进行显示,例,要在最左边的那个数码管上显示结果,相应的值应该是“10000000”,如果要所有的数码管都显示,相应的值就是“11111111”。 动态显示数码管M3-M4: 用来将最终的结果显示在数码管上,由于要把每个数字或字母分成7段来显示,所以采用了动态扫描电路方式,将静态现实中的数码管M3,M4对应的8个I/O口用于动态显示的数码管的8个管,由于此处没用到小数点位dp,故总设它为0。关于7段的分发和具体对应的数字和字符,祥见下图和下表: A b c d e f g 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 0 2 1 1 0 1 1 0 1 3 1 1 1 1 0 0 1 4 0 1 1 0 0 1 1 5 1 0 1 1 0 1 1 6 0 0 1 1 1 1 1 7 1 1 1 0 0 0 0 8 1 1 1 1 1 1 1 9 1 1 1 1 0 1 1 A 1 1 1 0 1 1 1 B 0 0 1 1 1 1 1 C 1 0 0 1 1 1 0 D 1 1 1 1 1 0 1 E 1 0 0 1 1 1 1 F 1 0 0 1 1 1 1 编程思想: 首先要对输入输出数据进行定义,有两个4位的数组COL,ROW分别相对应输入的行和输出的列,从而最终可以确定用户所按得键。还有两个8位的数组OUT,SELE,分别对应最终的7段码的显示和那一个数码管负责显示。最后一个需要定义的就是时钟变量clk。 其次就是要进行键盘扫描,在具体在操作中,一个作为行扫描,一个作为列扫描,然后两者前后连接起来,作为一个8位长的数可以唯一确定用户所按得键。 最后就是根据上面这个数来确定7段码。 源程序: LIBRARY IEEE; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; ENTITY SCAN IS PORT (COL: IN std_logic_vector(3 downto 0); ROW: buffer std_logic_vector(3 downto 0); P_OUT : OUT std_logic_vector(7 DOWNTO 0); SELE : OUT std_logic_vector(7 downto 0); clk : in std_logic); END SCAN; ARCHITECTURE PRINT OF SCAN IS signal BUF: std_logic_VECTOR (7 DOWNTO 0); BEGIN P1: PROCESS(clk) BEGIN if (clk'event and clk='1') then case ROW is when "1110"=> ROW <="1101"; when "1101"=> ROW <="1011"; when "1011"=> ROW <="0111"; when others => ROW <="1110"; end case; end if; end process P1; P2: process(CLK) variable tmp: std_logic_VECTOR (7 DOWNTO 0); begin if (clk'event and clk='0') then if (COL/="1111") then tmp := ROW&COL; case tmp is WHEN "11101110" => BUF <= "11111100"; WHEN "11011110" => BUF <= "01100000"; WHEN "10111110" => BUF <= "11011010"; WHEN "01111110" => BUF <= "11110010"; WHEN "11101101" => BUF <= "01100110"; WHEN "11011101" => BUF <= "10110110"; WHEN "10111101" => BUF <= "10111110"; WHEN "01111101" => BUF <= "11100000"; WHEN "11101011" => BUF <= "11111110"; WHEN "11011011" => BUF <= "11110110"; WHEN "10111011" => BUF <= "11101110"; WHEN "01111011" => BUF <= "11111110"; WHEN "11100111" => BUF <= "10011100"; WHEN "11010111" => BUF <= "11111100"; WHEN "10110111" => BUF <= "10011110"; WHEN "01110111" => BUF <= "10001110"; when others => BUF <="00000000"; end case; end if; end if; end process P2; P3: process(clk) begin if(clk'event and clk='0') then if (BUF /= "00000000" ) then SELE<="11111110"; P_OUT <=BUF; end if; end if; end process P3; END PRINT;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服