- 註冊時間
- 2005-10-8
- 最後登錄
- 2024-5-6
- 主題
- 查看
- 積分
- 28
- 閱讀權限
- 20
- 文章
- 12
- 相冊
- 0
- 日誌
- 0
狀態︰
離線
|
小弟我看書上寫 VHDL process(sensitivity list),
process運作是偵測到 sensitivity list 訊號有變化就會執行底下所有敘述,
但小弟實際上我實際上測試,如果沒有掛一個if來偵測CLK的訊號變化根本不會動。
小弟以前學VHDL的時候都是掛一個CLK來運作,當初也沒想太多為什麼,
最近自己在玩卻一直搞不懂為什麼不能這樣操作,請各位大大指點迷津,謝謝。
不會動的程式碼:
library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_arith.all;
Use ieee.std_logic_unsigned.all;
entity test is
port (
CLK : in std_logic;
SO : out std_logic_vector(2 downto 0)
);
end test;
architecture output of test is
signal buf : std_logic_vector(2 downto 0) := "000";
begin
process(CLK)
begin
buf <= buf + 1;
SO <= buf;
end process;
end output;
會動的程式碼:
library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_arith.all;
Use ieee.std_logic_unsigned.all;
entity test is
port (
CLK : in std_logic;
SO : out std_logic_vector(2 downto 0)
);
end test;
architecture output of test is
signal buf : std_logic_vector(2 downto 0) := "000";
begin
process(CLK)
begin
if ((CLK'event) and (CLK='1')) then
buf <= buf + 1;
SO <= buf;
end if;
end process;
end output; |
|