最近一堆事情纠结..期末考+嵌入式+EDA....力不从心中...很久没搭理博客了...TI杯的电子竞赛的选拔赛也没去参加...
无聊中....贴下实验报告...
1、 题目:
用余3码设计一模43的可逆计数器,并将结果以十进制输出。(设工作频率为20MHz)
2、 设计思想
将计数器分文为可逆计数器和译码部分两个进程,计数器由ctrl引脚控制,ctrl为高时为高电平时为加法计数器,来一个脉冲计数器加3,当ctrl为低的时候为剑法计数器,来一个脉冲计数器减3,译码部分将余三码转化为相应的结果,即将0,3,6,9等转化为0,1,2,3等
3、 源程序
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY counter IS
port(clk,ctrl,clr:IN STD_LOGIC;qa,qb,qc,qd,qe,qf:OUT STD_LOGIC);
--end counter;
END ENTITY counter;
ARCHITECTURE tmp OF counter IS
SIGNAL count_8: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL output_6: STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN
qa<=output_6(0);
qb<=output_6(1);
qc<=output_6(2);
qd<=output_6(3);
qe<=output_6(4);
qf<=output_6(5);
count:PROCESS(clk,clr) IS
BEGIN
IF(clr='1') THEN
count_8<=(OTHERS=>'0');
ELSIF(clk'EVENT AND clk='1')THEN
IF(ctrl='1')THEN
IF(count_8="01111110")THEN
count_8<="00000000";
ELSE
count_8<=count_8+"00000011";
END IF;
ELSE
IF(count_8="00000000")THEN
count_8<="01111110";
ELSE
count_8<=count_8-"00000011";
END IF;
END IF;
END IF;
END PROCESS count;
decode: PROCESS(count_8) IS
BEGIN
--IF(count_8'EVENT)THEN
CASE count_8 IS
WHEN "00000000"=>output_6<="000000";
WHEN"00000011"=>output_6<="000001";WHEN"00000110"=>output_6<="000010;
WHEN"00001001"=>output_6<="000011";WHEN"00001100"=>output_6<="000100;
WHEN "00001111"=>output_6<="000101";WHEN "00010010"=>output_6<="000110";
WHEN "00010101"=>output_6<="000111";WHEN "00011000"=>output_6<="001000";
WHEN "00011011"=>output_6<="001001";WHEN "00011110"=>output_6<="001010";
WHEN "00100001"=>output_6<="001011";WHEN "00100100"=>output_6<="001100";
WHEN "00100111"=>output_6<="001101";WHEN "00101010"=>output_6<="001110";
WHEN "00101101"=>output_6<="001111";WHEN "00110000"=>output_6<="010000";
WHEN "00110011"=>output_6<="010001";WHEN "00110110"=>output_6<="010010";
WHEN "00111001"=>output_6<="010011";WHEN "00111100"=>output_6<="010100";
WHEN "00111111"=>output_6<="010101";WHEN "01000010"=>output_6<="010110";
WHEN "01000101"=>output_6<="010111";WHEN "01001000"=>output_6<="011000";
WHEN "01001011"=>output_6<="011001";WHEN "01001110"=>output_6<="011010";
WHEN "01010001"=>output_6<="011011";WHEN "01010100"=>output_6<="011100";
WHEN "01010111"=>output_6<="011101";WHEN "01011010"=>output_6<="011110";
WHEN "01011101"=>output_6<="011111";WHEN "01100000"=>output_6<="100000";
WHEN "01100011"=>output_6<="100001";WHEN "01100110"=>output_6<="100010";
WHEN "01101001"=>output_6<="100011";WHEN "01101100"=>output_6<="100100";
WHEN "01101111"=>output_6<="100101";WHEN "01110010"=>output_6<="100110";
WHEN "01110101"=>output_6<="100111";WHEN "01111000"=>output_6<="101000";
WHEN "01111011"=>output_6<="101001";WHEN "01111110"=>output_6<="101010";
WHEN OTHERS=>output_6<="000000";
END CASE;
--END IF;
END PROCESS decode;
END tmp;
据说这届acm暑假集训又该在徐汇了啊...不错~~
在网上偶遇ZY大牛...ms ZY大神最近在拉人去创新工厂啊...听说有楼天成等大牛~~
李开复的《世界因你而不同》快看完了...膜拜中.....对一些跨国公司ms有了些了解...感觉自己真是啥都不知道的...- -||
阅读全文
类别:My Works 查看评论文章来源:
http://hi.baidu.com/%D2%EC%B6%C8%BF%D5%BC%E4%5F%B5%DA%CB%C4%CE%AC/blog/item/eb82dd1bbfdcd44842a9ad64.html
posted on 2010-07-01 23:35
ccyy 阅读(295)
评论(0) 编辑 收藏 引用