完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity exa_10 is port ( inclk: in std_logic; outled:out std_logic_vector(7 downto 0); outbit:out std_logic_vector(7 downto 0)); end exa_10; Architecture a_counter of exa_10 is signal ma,mb,mc,md,me,mf,mseg:std_logic_vector(3 downto 0); signal lm ,hm: std_logic_vector(24 downto 0); signal fpa,fpb: std_logic; signal st: std_logic_vector(2 downto 0); begin process(inclk) begin if (inclk'event and inclk='1') then if lm=24999999 then lm<="0000000000000000000000000"; fpa<=not fpa; else lm<=lm+1; end if; end if; end process; process(inclk) begin if (inclk'event and inclk='1') then if hm=50 then hm<="0000000000000000000000000"; fpb<=not fpb; else hm<=hm+1; end if; end if; end process; process(fpa) begin if (fpa'event and fpa='1') then if ma=9 then ma<="0000"; if mb=5 then mb<="0000"; if mc=9 then mc<="0000"; if md=5 then md<="0000"; if(me=2 and mf=1)then me<="0001";mf<="0000"; else if me=9 then mf<=mf+1; me<="0000"; else me<=me+1; end if; end if; else md<=md+1; end if; else mc<=mc+1; end if; else mb<=mb+1; end if; else ma<=ma+1; end if; end if; end process; process (fpb) begin if(fpb'event and fpb='1') then st<=st+1; end if; end process; process (st,ma,mb,mc,md,me,mf,mseg) begin case st is when "000" => mseg<=ma; outbit<="00000010"; when "001"=> mseg<=mb; outbit<="00100000"; when "010"=> mseg<=mc; outbit<="00010000"; when "011"=> mseg<=md; outbit<="00001000"; when "100"=> mseg<=me; outbit<="00000100"; when "101"=> mseg<=mf; outbit<="00000001"; when others=>outbit<="00000000"; end case; end process; Process(fpb) begin if(fpb'event and fpb='1') then case mseg is when "0001"=>outled<="00000110"; when "0010"=>outled<="01011011"; when "0011"=>outled<="01001111"; when "0100"=>outled<="01100110"; when "0101"=>outled<="01101101"; when "0110"=>outled<="01111101"; when "0111"=>outled<="00000111"; when "1000"=>outled<="01111111"; when "1001"=>outled<="01101111"; when "0000"=>outled<="00111111"; when "1010"=>outled<="01110111"; when "1011"=>outled<="01111100"; when "1100"=>outled<="00111001"; when "1101"=>outled<="01011110"; when "1110"=>outled<="01111001"; when "1111"=>outled<="01110001"; when others=>outled<="00111111"; end case; end if; end process; end a_counter; |
|
相关推荐
11个回答
|
|
俄..有你这样问问题的么...也不说说你自己觉得哪里不对.
|
|
|
|
而且代码还没有注释
|
|
|
|
if(me=2 and mf=1)then me<="0001";mf<="0000"; else if me=9 then mf<=mf+1; me<="0000"; else me<=me+1; end if; end if; 这段我觉得不对 我仿真的时候数码管显示不对 代码没问题的 用的是240引脚的片子 |
|
|
|
代码没注释,没人看的。
|
|
|
|
我怎么感觉你这是当me等于2的时候令me等于1,然后me再加1等于2的时候又令它等于1,然后循环。 还有你第三个进程想取fpa的上升沿,不建议这样做,可以用时钟把fpa延迟一下,再去两个信号的与 process(inclk) begin if (inclk'event and inclk='1') then fpa_d1 <= fpa; end if; end process; fpa_en <= (not fpa_d1) and fpa; --fpa的上升沿,后面用这个做判断 还有没有复位信号 |
|
|
|
你把原文加改过的都给我吧 我看不懂了 |
|
|
|
谢谢 |
|
|
|
|
|
|
|
|
|
|
|
自己动手啊。取某个信号上升沿的方法可以用判断当fpa_en为‘1’时就是fpa的上升沿。不要一个实体中几个时钟。 |
|
|
|
还有注意你的数码管是低电平(选通)有效还是高电平(选通)有效
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1634 浏览 1 评论
1396 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1608 浏览 0 评论
937 浏览 0 评论
2404 浏览 0 评论
1490 浏览 37 评论
5691 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 05:08 , Processed in 0.722871 second(s), Total 91, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号