我想实现这样一个逻辑功能 <br />用4位2进制信号cin来控制一个输出信号 当0000时输出一个10进制数字并且这个数字是最小数字 当1111输出一个10进制数字 这个数字是最大数字 当cin在0000和1111之间时输出从最小数到最大中间的任意一个从小到大的数<br />具体的大家看我的程序 大家有没什么问题 谢谢了<br />library ieee;<br />use ieee.std_logic_1164.all;<br />use ieee.std_logic_unsigned.all;<br />use ieee.std_logic_arith.all;<br /><br />entity yindiao is<br />port<br />(clk : in std_logic;<br /> cin : in std_logic_vector(3 downto 0);<br /> q : out integer range 0 to 10204<br />);<br />end yindiao;<br /><br />architecture behave of yindiao is<br />begin<br /> process(clk)<br /> variable cnt1:integer range 0 to 150000;<br /> begin <br /> if clk'event and clk='1' then<br /> if cnt1<150000 then --此数值控制每一个音的长短<br /> cnt1:=cnt1+1;<br /> else<br /> cnt1:=0;<br /> case cin is<br /> when "0000" =>q<=638;<br /> <br /> when "0001" =>q<=1275;<br /> <br /> when "0010" =>q<=1913;<br /> <br /> when "0011" =>q<=2550;<br /> <br /> when "0100" =>q<=3186;<br /><br /> when "0101" =>q<=3823;<br /> <br /> when "0110" =>q<=4460;<br /> <br /> when "0111" =>q<=5098;<br /> <br /> when "1000" =>q<=5700;<br /> <br /> when "1001" =>q<=6300;<br /> <br /> when "1010" =>q<=6900;<br /> <br /> when "1011" =>q<=7600;<br /> <br /> when "1100" =>q<=8200;<br /> <br /> when "1101" =>q<=8890;<br /> <br /> when "1110" =>q<=9500;<br /> <br /> when "1111" =>q<=10204;<br /> end case;<br /> end if;<br /> end if;<br /> end process;<br />end behave; |
|