LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SCAN_LED IS
port(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15:IN STD_LOGIC;
CLK : IN STD_LOGIC;
SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
Q1,Q2,Q3,Q4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END;
ARCHITECTURE ONE OF SCAN_LED IS
SIGNAL A:INTEGER RANGE 0 TO 15;
BEGIN
P1:PROCESS(CLK,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15)
VARIABLE P:STD_LOGIC_VECTOR(15 DOWNTO 0);
VARIABLE S:INTEGER RANGE 0 TO 4;
VARIABLE T:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE W:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE M1,M2,M3: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF CLK'EVENT AND CLK='1'THEN
P:=A0&A1&A2&A3&A4&A5&A6&A7&A8&A9&A10&A11&A12&A13&A14&A15;
IF P>0 THEN S:=S+1;
IF S>4 THEN S:=1;
END IF;
CASE S IS
WHEN 0 =>W:="0000";
WHEN 1 =>W:="0001";
WHEN 2 =>W:="0011";
WHEN 3 =>W:="0111";
WHEN 4 =>W:="1111";
END CASE;
CASE P IS
WHEN "0000000000000001"=>T:="1111"; A<=15;
WHEN "0000000000000010"=>T:="1110"; A<=14;
WHEN "0000000000000100"=>T:="1101"; A<=13;
WHEN "0000000000001000"=>T:="1100"; A<=12;
WHEN "0000000000010000"=>T:="1011"; A<=11;
WHEN "0000000000100000"=>T:="1010"; A<=10;
WHEN "0000000001000000"=>T:="1001"; A<=9;
WHEN "0000000010000000"=>T:="1000"; A<=8;
WHEN "0000000100000000"=>T:="0111"; A<=7;
WHEN "0000001000000000"=>T:="0110"; A<=6;
WHEN "0000010000000000"=>T:="0101"; A<=5;
WHEN "0000100000000000"=>T:="0100"; A<=4;
WHEN "0001000000000000"=>T:="0011"; A<=3;
WHEN "0010000000000000"=>T:="0010"; A<=2;
WHEN "0100000000000000"=>T:="0001"; A<=1;
WHEN "1000000000000000"=>T:="0000"; A<=0;
WHEN OTHERS =>NULL;
END CASE;
IF W="0001" THEN Q4<=M3;Q3<=M2;Q2<=M1;Q1<=t;
M3:=M2;M2:=M1;M1:=t;
ELSIF W="0011" THEN Q4<=M3;Q3<=M2;Q2<=M1;Q1<=t;
M3:=M2;M2:=M1;M1:=t;
ELSIF W="0111" THEN Q4<=M3;Q3<=M2;Q2<=M1;Q1<=t;
M3:=M2;M2:=M1;M1:=t;
ELSIF W="1111" THEN Q4<=M3;Q3<=M2;Q2<=M1;Q1<=t;
M3:=M2;M2:=M1;M1:=t;
END IF;
END IF;
END IF;
END PROCESS P1;
P2:PROCESS(A)
BEGIN
CASE A IS
WHEN 0 => SG <= "0111111"; WHEN 1 => SG <= "0000110";
WHEN 2 => SG <= "1011011"; WHEN 3 => SG <= "1001111";
WHEN 4 => SG <= "1100110"; WHEN 5 => SG <= "1101101";
WHEN 6 => SG <= "1111101"; WHEN 7 => SG <= "0000111";
WHEN 8 => SG <= "1111111"; WHEN 9 => SG <= "1101111";
WHEN 10 => SG <= "1110111"; WHEN 11 => SG <= "1111100";
WHEN 12 => SG <= "0111001"; WHEN 13 => SG <= "1011110";
WHEN 14 => SG <= "1111001"; WHEN 15 => SG <= "1110001";
WHEN OTHERS => NULL;
END CASE;
END PROCESS P2;
END;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1)输入设备为4*4矩阵键盘,分别代表0~F; 2)输出设备为四位数码显示管,初始值显示0000,当按下某一键时,最右边的一位数码显示管显示最新一次所按按键的数值,而之前的显示值左移,例如,第一次按‘1’键,则显示0001;第二次按‘3’键,则显示0013;第三次按‘5’键,则显示0135;第四次按‘7’键,则显示1357;第五次按‘9’键,则显示3579,第四次按‘F’键,则显示579F等等;
资源推荐
资源详情
资源评论
收起资源包目录
SCAN_LED.rar (66个子文件)
SCAN_LED
SCAN_LED.vhd.bak 3KB
SCAN_LED.qsf 2KB
SCAN_LED.tan.rpt 92KB
SCAN_LED.done 26B
SCAN_LED.fit.rpt 36KB
SCAN_LED.vhd 3KB
SCAN_LED.map.rpt 15KB
db
SCAN_LED.tan.qmsg 39KB
SCAN_LED.rtlv_sg_swap.cdb 178B
SCAN_LED.sim.hdb 3KB
SCAN_LED.hier_info 7KB
SCAN_LED.hif 784B
SCAN_LED.dbp 0B
SCAN_LED.(0).cnf.hdb 2KB
SCAN_LED.cbx.xml 90B
SCAN_LED.map.qmsg 6KB
prev_cmp_SCAN_LED.qmsg 51KB
SCAN_LED.cmp.tdb 15KB
SCAN_LED.map.cdb 6KB
prev_cmp_SCAN_LED.sim.qmsg 3KB
wed.wsf 11KB
SCAN_LED.rtlv.hdb 8KB
SCAN_LED.cmp0.ddb 5KB
SCAN_LED.sim.qmsg 3KB
prev_cmp_SCAN_LED.asm.qmsg 2KB
prev_cmp_SCAN_LED.map.qmsg 6KB
SCAN_LED.fit.qmsg 4KB
SCAN_LED.tis_db_list.ddb 174B
SCAN_LED.cmp.logdb 4B
prev_cmp_SCAN_LED.fit.qmsg 4KB
SCAN_LED.map.logdb 4B
SCAN_LED.(0).cnf.cdb 9KB
SCAN_LED.cmp.hdb 9KB
SCAN_LED.sim.rdb 3KB
SCAN_LED.rtlv_sg.cdb 8KB
SCAN_LED.sgdiff.cdb 4KB
SCAN_LED.eds_overflow 2B
SCAN_LED.pre_map.hdb 8KB
prev_cmp_SCAN_LED.tan.qmsg 40KB
SCAN_LED.sld_design_entry_dsc.sci 154B
SCAN_LED.eco.cdb 161B
SCAN_LED.cmp.rdb 16KB
SCAN_LED.sld_design_entry.sci 154B
SCAN_LED.sim.cvwf 2KB
SCAN_LED.pss 0B
SCAN_LED.map.hdb 9KB
SCAN_LED.db_info 137B
SCAN_LED.sgdiff.hdb 8KB
SCAN_LED.psp 0B
SCAN_LED.cmp.cdb 18KB
SCAN_LED.syn_hier_info 0B
SCAN_LED.asm.qmsg 2KB
SCAN_LED.pre_map.cdb 8KB
SCAN_LED.sim.rpt 19KB
SCAN_LED.tan.summary 1KB
SCAN_LED.vwf 18KB
SCAN_LED.sof 19KB
SCAN_LED.pin 18KB
SCAN_LED.flow.rpt 4KB
SCAN_LED.txt 3KB
SCAN_LED.qws 1KB
SCAN_LED.map.summary 292B
SCAN_LED.qpf 909B
SCAN_LED.asm.rpt 8KB
SCAN_LED.fit.summary 371B
SCAN_LED.pof 207KB
共 66 条
- 1
资源评论
- hrx-@@2015-09-05挺不错的 值得学习~~~
- Inighty2014-07-09很适合初学者学习,谢谢了!就是机器的引脚分配不一样 得找找
- daishu60922015-12-21下载了,程序写的很不详细。
danielsmike
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功