我做了這個計數器,我相信它應該可以工作,但是我的矢量波形文件卻說不然。 y只是顯示爲先發球員4位數這是沒有意義的爲什麼不會這個VHDL計數器計數
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity counter is generic (
startnum : natural := 0;
N : natural := 16
); port (
--Inputs
EN : in std_logic;
synchr : in std_logic;
asyncr : in std_logic;
dir : in std_logic; -- 0 for count down 1 for count up.
clk : in std_logic;
--Outputs
Y : out natural range startnum to n-1
);
end entity;
architecture counter_v1 of counter is
signal cntconst : integer;
begin
process (dir) --dir in sensitivity list as when this changes we want this process to run.
begin
if (dir = '0') then
cntconst <= -1; --this will count down when added onto to the counter value
end if;
if (dir = '1') then
cntconst <= 1;
end if;
end process;
process (asyncr, clk)
variable countvar : integer range startnum to n-1;--I tried to just use y but for some reason it won't allow that.
begin
if (en = '0') then
else
if (asyncr = '1') then
countvar := 0;
else
--if (clk = '1') then
--if (synchr = '1') then
--countvar := 0;
--end if;
--end if;
end if;
if (cntconst < n-1) then
if (dir = '1') then
countvar := countvar + cntconst;
end if;
end if;
if (cntconst > startnum) then
if (dir = '0') then
countvar := countvar + cntconst;
end if;
end if;
end if;
y <= cntconst;
end process;
end counter_v1;
任何幫助將是非常美妙......我在一個總損失在這一點上 謝謝。
這是更整潔,更容易遵循!出於某種原因,它給我一個編譯錯誤,雖然錯誤(10500):Counter.vhd(39)附近的文本「<」的VHDL語法錯誤;期待「(」,或「'」或「。」 我真的不明白爲什麼......任何想法? – Andeeh
@Andeeh哎呀!我的代碼試圖從'out'端口讀取。修復,我沒有VHDL編譯器,所以希望沒有更多的問題。 – godel9