BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / circuit / #19325同步于 2011/12/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖

以下是我自己写的一个抢答器的程序,但是不计时,感觉很奇怪,

danielinwind
2011/12/26镜像同步2 回复
--主程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY test IS PORT( player11: IN std_logic_vector(10 downto 0); host: IN std_logic; clk: IN std_logic; choose: IN std_logic; light1: OUT std_logic_vector(6 downto 0); light1ten: OUT std_logic_vector(6 downto 0); light2: OUT std_logic_vector(6 downto 0); light2ten: OUT std_logic_vector(6 downto 0); warn: OUT std_logic ); END test; ARCHITECTURE test_arc OF test IS SIGNAL so:std_logic_vector(3 downto 0); SIGNAL co:std_logic_vector(3 downto 0); SIGNAL lock:std_logic:='0'; SIGNAL warnlock:std_logic:='0'; SIGNAL count1s:std_logic_vector(3 downto 0); SIGNAL count1tens:std_logic_vector(3 downto 0); COMPONENT se_07 PORT(a: IN std_logic_vector(3 downto 0); b: OUT std_logic_vector(6 downto 0)); END COMPONENT; BEGIN PROCESS(player11,host,clk) VARIABLE count1:std_logic_vector(3 downto 0):="0000"; VARIABLE count1ten:std_logic_vector(3 downto 0):="0011"; BEGIN IF(host='0') THEN IF(lock='0') THEN CASE player11 IS WHEN "00000000001" => so<="0001";co<="0000";lock<='1'; WHEN "00000000010" => so<="0010";co<="0000";lock<='1'; WHEN "00000000100" => so<="0011";CO<="0000";lock<='1'; WHEN "00000001000" => so<="0100";CO<="0000";lock<='1'; WHEN "00000010000" => so<="0101";CO<="0000";lock<='1'; WHEN "00000100000" => so<="0110";CO<="0000";lock<='1'; WHEN "00001000000" => so<="0111";CO<="0000";lock<='1'; WHEN "00010000000" => so<="1000";CO<="0000";lock<='1'; WHEN "00100000000" => so<="1001";CO<="0000";lock<='1'; WHEN "01000000000" => so<="0000";CO<="0001";lock<='1'; WHEN "10000000000" => so<="0001";CO<="0001";lock<='1'; WHEN OTHERS => so<="1111";CO<="1111"; END CASE; END IF; ELSE so<="1111";CO<="1111"; lock<='0'; END IF; IF (clk'event and clk='1') THEN IF(lock='1') THEN IF(count1="0000") THEN IF(count1ten/="0000") THEN IF(count1ten="0001") THEN warnlock<='1'; END IF; count1ten:=count1ten-1; count1:="1001"; ELSE count1:=count1-1; END IF; END IF; END IF; END IF; warn<=warnlock; count1s<=count1; count1tens<=count1ten; END PROCESS; U0:se_07 PORT MAP(so,light1); U1:se_07 PORT MAP(co,light1ten); U2:se_07 PORT MAP(count1tens,light2ten); U3:se_07 PORT MAP(count1s,light2); END test_arc; library ieee; use ieee.std_logic_1164.all; ENTITY se_07 IS PORT(A: IN std_logic_vector(3 downto 0); B: OUT std_logic_vector(6 downto 0)); END se_07; ARCHITECTURE se_07_arc OF se_07 IS BEGIN PROCESS(A) BEGIN CASE A IS WHEN "0000" => B<="1111110"; WHEN "0001" => B<="0110000"; WHEN "0010" => B<="1101101"; WHEN "0011" => B<="1111001"; WHEN "0100" => B<="0110011"; WHEN "0101" => B<="1011011"; WHEN "0110" => B<="1011111"; WHEN "0111" => B<="1110000"; WHEN "1000" => B<="1111111"; WHEN "1001" => B<="1111011"; WHEN OTHERS => B<="0000000"; END CASE; END PROCESS; END se_07_arc;
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
ghy机器人#1 · 2011/12/27
唔,木有注释,排版不错~~~~
teamo机器人#2 · 2011/12/28
最好仿真一下 磨刀不误砍柴工。 【 在 danielinwind 的大作中提到: 】 : --主程序 : library ieee; : use ieee.std_logic_1164.all; : ...................