Vhdl 以下代码不适用于';t更新温度计数,一个信号。
我有一个10位乘法器的结构化实现,其中它们是一个控制单元,用于跟踪状态并相应更新。它们是一个名为temp_count的计数器,该计数器应该更新并告诉我是否已完成任务。我希望我可以附上模拟的图片,但我无法访问它。我稍后会更新它。如果有人能帮我,这是密码Vhdl 以下代码不适用于';t更新温度计数,一个信号。,vhdl,Vhdl,我有一个10位乘法器的结构化实现,其中它们是一个控制单元,用于跟踪状态并相应更新。它们是一个名为temp_count的计数器,该计数器应该更新并告诉我是否已完成任务。我希望我可以附上模拟的图片,但我无法访问它。我稍后会更新它。如果有人能帮我,这是密码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity Controller
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity Controller is
port (reset : in std_logic ;
clk : in std_logic ;
START : in std_logic ;
LSB : in std_logic ;
ADD_cmd : out std_logic ;
SHIFT_cmd : out std_logic ;
LOAD_cmd : out std_logic ;
STOP : out std_logic);
end;
architecture rtl of Controller is
signal temp_count : std_logic_vector(3 downto 0);
-- declare states
type state_typ is (IDLE, INIT, TEST, ADD, SHIFT);
signal state : state_typ;
begin
process (clk, reset)
begin
if reset='0' then
state <= IDLE;
temp_count <= "0000";
elsif (clk'event and clk='1') then
when IDLE =>
if START = '1' then
state <= INIT;
else
state <= IDLE;
end if;
when INIT =>
state <= TEST;
when TEST =>
if LSB = '0' then
state <= SHIFT;
else
state <= ADD;
end if;
when ADD =>
state <= SHIFT;
when SHIFT =>
if temp_count = "1001" then -- verify if finished
temp_count <= "0000"; -- re-initialize counter
state <= IDLE; -- ready for next multiply
else
temp_count <= temp_count + 1; -- increment counter
state <= TEST;
end if;
end case;
end if;
end process;
STOP <= '1' when state = IDLE else '0';
ADD_cmd <= '1' when state = ADD else '0';
SHIFT_cmd <= '1' when state = SHIFT else '0';
LOAD_cmd <= '1' when state = INIT else '0';
end rtl;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.std_logic_arith.all;
使用ieee.std_logic_unsigned.all;
实体控制器是
端口(复位:在std_逻辑中;
clk:标准逻辑中;
启动:在标准逻辑中;
LSB:标准逻辑中;
添加命令:输出标准逻辑;
移位指令:输出标准逻辑;
加载命令:输出标准逻辑;
停止:输出标准(U逻辑);
结束;
介绍了控制器的rtl体系结构
信号温度计数:标准逻辑向量(3到0);
--申报国家
类型状态类型为(空闲、初始化、测试、添加、移位);
信号状态:状态\典型;
开始
过程(时钟、复位)
开始
如果reset='0',则
声明我刚刚在modelsim上试用了你的代码,它对我很有效。是否您忘记了实体正在使用“低激活”重置?对于模拟,最好将所有声明的信号初始化为零。例如,temp_count.和A.Kieffer的评论是要求A的一个很好的理由,在本例中说明了问题。我刚刚在modelsim上尝试了你的代码,它对我很有效。是否您忘记了实体正在使用“低激活”重置?对于模拟,最好将所有声明的信号初始化为零。例如,temp_count.和A.Kieffer的评论是要求A的一个很好的理由,在本例中,说明了问题所在。