gpt4 book ai didi

VHDL - 带反馈的相位累加器

转载 作者:行者123 更新时间:2023-12-02 14:53:09 28 4
gpt4 key购买 nike

我正在尝试使用具有以下特征的 VHDL 创建相位累加器。

输入:

  • D(输入信号)
  • 重置
  • CE
  • 时钟

输出:

  • Q(输出信号-反馈)

源代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Phase_accu is
port (
D : in std_logic_vector(3 downto 0);
CE : in std_logic;
CLK : in std_logic;
RESET : in std_logic;
Q : out std_logic_vector(15 downto 0)
);
end Phase_accu;

architecture Behavioral of Phase_accu is
begin

process(D, CE, CLK, RESET)
begin
if RESET = '1' then
Q <= "0000000000000000";
elsif rising_edge(CLK) then
if CE = '1' then
Q <= ("000000000000" & D) + Q;
end if;
end if;
end process;

end Behavioral;

我在尝试将 2 个反馈信号合并在一起时遇到错误...

Q <= ("000000000000" & D) + Q;

无法读取输出“Q”。

最佳答案

在 VHDL-2008 之前的 VHDL 修订版中,您无法读取 out 的值。解决这个问题的通常方法是拥有输出的内部副本,并在需要获取其值时使用该内部副本:

[...]
Q : out std_logic_vector(15 downto 0);
[...]
signal Q_reg : std_logic_vector(15 downto 0);

process(D, CE, CLK, RES)
begin

if RES = '1' then
Q_reg <= "0000000000000000";
elsif rising_edge(CLK) then
if CE = '1' then
Q_reg <= ("000000000000" & D) + Q_reg;
end if;
end if;
end process;

Q <= Q_reg;

关于VHDL - 带反馈的相位累加器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54541371/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com