eda课程设计要干什么(eda课程主要讲啥)

游戏日常 2025-01-14 14:01:50

您好,今天怡怡来为大家解答以上的问题。eda课程设计要干什么相信很多小伙伴还不知道,现在让我们一起来看看吧!

eda课程设计要干什么(eda课程主要讲啥)eda课程设计要干什么(eda课程主要讲啥)


eda课程设计要干什么(eda课程主要讲啥)


1、一、总体设计思想电子拔河是一种能容纳甲乙双方参赛游戏电路。

2、由一排发光二极管表示拔河的“电子绳”。

3、由甲乙双方通过按纽开关使发光二极管向一方的终点延伸,当延伸到某方的一个发光二极管时, 则该方获胜,连续比赛多局以定胜负。

4、1.基本原理本电路要求使用9个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。

5、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。

6、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。

7、用数码管显示获胜者的盘数。

8、由设计内容可知,首先需要一个十进制的计数器,用于对双方按钮的次数计数,并通过译码器显示在数码管上。

9、设计要求用50MHz的频率,而设计用到的是1K Hz的频率,所以要设计一个程序进行分频。

10、其次,显视控制部分设计要求在发光二极管上显示游戏状态,双方每按十次,亮点向先按十次移动一次,对脉冲进行计数,每十次移一位。

11、需接入一个清零端 ,用于复位。

12、再次,运用VHDL程序语言进行各个模块的程序编写,控制电路的正常运行。

13、,将以上程序组装起来,就可得到所需要的拔河library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bahe isport (a,b,rst,clk:in std_logic;sg,led:out std_logic_vector(8 downto 0);bt:out std_logic_vector(7 downto 0));end bahe;----------------------------------architecture one of bahe iscomponent cnt10port (clk,rst,en:std_logic;cout:out std_logic;cq:out std_logic_vector(3 downto 0));end component;component scanport (clk :in std_logic;a1, a2,a3,b1,b2,b3:in std_logic_vector(3 downto 0);sg:out std_logic_vector(8 downto 0);bt: out std_logic_vector(7 downto 0));end component;component lmovport (kl ,kr:in std_logic_vector(3 downto 0) ;led:out std_logic_vector(8 downto 0);en : out std_logic;rst:in std_logic);end component;signal e,f,ca1,ca2,cb1,cb2:std_logic;signal cqa1,cqa2,cqa3,cqb1,cqb2,cqb3:std_logic_vector(3 downto 0);beginu1: cnt10 port map (en=>e,rst=>rst,clk=>a,cout=>ca1,cq=>cqa1);u2: cnt10 port map (en=>e,rst=>rst,clk=>ca1,cout=>ca2,cq=>cqa2);u3: cnt10 port map (en=>e,rst=>rst,clk=>ca2,cq=>cqa3);u4: cnt10 port map (en=>e,rst=>rst,clk=>b,cout=>cb1,cq=>cqb1);u5: cnt10 port map (en=>e,rst=>rst,clk=>cb1,cout=>cb2,cq=>cqb2);u6: cnt10 port map (en=>e,rst=>rst,clk=>cb2,cq=>cqb3);u7: scan port map (a1=>cqa1,a2=>cqa2,a3=>cqa3,b1=>cqb1,b2=>cqb2,b3=>cqb3,clk=>clk,sg=>sg,bt=>bt);u8:lmov port map (en=>e,kl=>cqa2,kr=>cqb2,rst=>rst,led=>led);end architecture one;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,rst,en:std_logic;cout:out std_logic;cq:out std_logic_vector(3 downto 0));end;architecture one of cnt10 ieginprocess(clk,rst,en)variable cqi:std_logic_vector(3 downto 0);beginif rst='1' thencqi:=(others=>'0');elsif clk'nt and clk='1' thenif en='1' thenif cqielse cqi :=(others=>'0');end if ;end if;end if;if c qi=9 then couse coutend if;cqend process;end;电路的VHDL程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scan isport (clk :in std_logic;a1,a2,a3,b1,b2,b3:in std_logic_vector(3 downto 0);sg:out std_logic_vector(8 downto 0);bt: out std_logic_vector(7 downto 0));end;architecture one of scan issignal cnt4:std_logic_vector(2 downto 0);signal a:std_logic_vector(3 downto 0);signal clk1:std_logic;beginp1:process(cnt4)begincase cnt4 iswhen "000"=>btwhen "001"=>btwhen "010"=>btwhen "011"=>btwhen "100"=>btwhen "101"=>btwhen others=>btend case ;end process p1;---------------------------------p2:process (clk)variable ct:integer range 0 to 50000;beginif clk'nt and clk='1' then --1000HZif ctct:=ct+1;clk1elsect:=0;clk1end if;end if;end process p2;process(clk1)beginif clk1'nt an d clk1='1' thenif cnt4cnt4elsecnt4end if;end if;end process;------------------------------------process (a)begincase a iswhen "0000"=>sgwhen "0001"=>sgwhen "0010"=>sgwhen "0011"=>sgwhen "0100"=>sgwhen "0101"=>sgwhen "0110"=>sgwhen "0111"=>sgwhen "1000"=>sgwhen "1001"=>sgwhen "1010"=>sgwhen "1011"=>sgwhen "1100"=>sgwhen "1101"=>sgwhen "1110"=>sgwhen "1111"=>sgwhen others=>null;end case ;end process;end;⑸ 胜负显示将双方终端二极管正极经非门后的输出分别接到二个CC4518计数器的EN端,CC4518的两组4位BCD码分别接到实验装置的两组译码显示器的A、B、C、D插口处。

14、当一方取胜时,该方终端二极管发亮,产生一个上升沿,使相应的计数器进行加一计数,于是就得到了双方取胜次数的显示,若一位数不够,则进行二位数的级联。

15、⑹ 复位其VHDL程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lmov isport (kl ,kr:in std_logic_vector(3 downto 0) ;led:out std_logic_vector(8 downto 0);en : out std_logic;rst:in std_logic);end ;architecture one of lmov ieginprocess(rst,kl,kr)beginif rst='1' then ledelsif kl-kr=1 then ledelsif kl-kr=2 then ledelsif kl-kr=3 then ledelsif kl-kr=4 then ledelsif kr-kl=1 then ledelsif kr-kl=2 then ledelsif kr-kl=3 then ledelsif kl-kr=4 then ledelsif kr-kl=0 then ledelse null;end if;end process;end;。

本文到这结束,希望上面文章对大家有所帮助。

版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。