计数器?有个输出y,怎么使y在0到32为1 ,在32到64为1,64到100又为0?
计数器计数(假如可以计数0到100),有个输出y,怎么使y在0到32为1 ,在32到64为1,64到100又为0? 你已经说了很清楚了,看看书就可以写了<br><br>
good luck ! ??????????if 我也是感觉楼主讲的很明白了,呵呵 各位见谅:<br>
可不可以看看这个程序,我还是修改不对,总是在q+2等地方出错。谢谢了!<br>
library ieee;<br>
use ieee.std_logic_1164.all;<br>
use ieee.std_logic_arith.all;<br>
use ieee.std_logic_unsigned.all;<br>
entity shiyan36 is<br>
port(cp:in std_logic;<br>
res:in std_logic;<br>
d:in std_logic_vector(2 downto 0);<br>
vt_one,vt_two
http://bbs.vibesic.com/images/smilies/default/shocked.gif
ut std_logic);<br>
end shiyan36;<br>
architecture a of shiyan36 is<br>
signal wave1,wave2:std_logic;<br>
signal q:integer;<br>
begin<br>
u1:process(d)<br>
begin<br>
q<=conv_integer(d);<br>
end process;<br>
u2:process(cp,res,q)<br>
variable temp:integer range 0 to 7;<br>
begin<br>
if res='0' then<br>
temp:=0;<br>
elsif rising_edge(cp) then <br>
temp:=temp+1;<br>
case temp is<br>
when 0 to q=> wave1<='0';wave2<='0';<br>
when q to q+2=> wave1<='1';wave2<='0';<br>
when q+2 to q+4 => wave1<='0';wave2<='0';<br>
when q+4 to q+6=> wave1<='0';wave2<='1';<br>
when others=> wave1<='0';wave2<='0';<br>
end case;<br>
end if;<br>
end process;<br>
vt_one<=wave1;<br>
vt_two<=wave2;<br>
end a; 有这么复杂吗,我帮你做一个吧! --------------------------------------------------------------<br>
-- library<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>
--------------------------------------------------------------<br>
-- entity<br>
--------------------------------------------------------------<br>
entity cnter is<br>
port (<br>
RST : in std_logic; ----reset signal<br>
CLK : in std_logic;<br>
Y : out std_logic;<br>
);<br>
end cnter;<br>
<br>
--------------------------------------------------------------<br>
-- architecture<br>
--------------------------------------------------------------<br>
architecture RTL of cnter is<br>
<br>
signal n_counter : integer range 0 to 100 := 0;<br>
signal n_y : std_logic;<br>
<br>
begin<br>
<br>
p_n_counter : process(CLK, RST)<br>
begin<br>
if(RST = '0') then<br>
n_counter <= 0;<br>
n_y <= '0';<br>
<br>
elsif(CLK'event and CLK = '1') then<br>
if(n_counter < 100) then<br>
n_counter <= n_counter + 1;<br>
else <br>
n_counter <= 0;<br>
end if;<br>
end process;<br>
<br>
p_n_y : process(n_counter,RST)<br>
begin<br>
if(RST = '0') then<br>
n_y <= '0';<br>
<br>
elsif((n_counter >= 0) and<br>
(n_counter <= 31)) then<br>
n_y <= '1';<br>
elsif((n_counter >= 32) and<br>
(n_counter <= 63)) then<br>
n_y <= '0';<br>
else <br>
n_y <= '1';<br>
end if;<br>
end process;<br>
<br>
Y <= n_y;<br>
<br>
end RTL;<br>
<br>
我写的也是乱糟糟的,要下班了,你看看吧!!<br>
<br>
计数器最好用integer型来写比较容易!
页:
[1]