【发布时间】:2017-12-13 11:44:18
【问题描述】:
这里我已经上传了模拟结果。在突出显示的部分,它应该将 sys_clk 分配给两个信号
在定义的 sclk_1 和 sclk_2 信号经过一些延迟后,我编写了 vhdl 代码来分配系统时钟(Sys_clk)。
当代码运行和执行时,在计数器计数 25 次后的仿真中,这两个信号的状态只是显示为高(逻辑电平高)而不是系统时钟 (Sys_Clk)。
我使用的是 Artix 7 Basys -3 Board,它有 100MHZ 系统时钟。
谁能帮我如何在定义的信号上分配系统时钟(Sys_Clk)??
architecture Behavioral of Power_Sequence is
signal counter : integer := 0;
signal sclk_1 : std_logic := '0';
signal sclk_2 : std_logic := '0';
begin
process(Sys_Clk)
begin
if(Sys_Clk 'event and Sys_Clk = '1') then
if(resetb = '0')then
sclk_1 <= '0';
sclk_2 <= '0';
else
counter <= counter + 1;
if (counter > 24 and counter < 50) then
sclk_1 <= Sys_Clk;
sclk_2 <= Sys_Clk;
end if;
end if;
end if;
end process;
end Behavioral;
【问题讨论】:
-
编辑问题并将其设为minimal reproducible example。包括您收到的确切错误消息。目前我们看不到任何相关声明(尽管缺少分号很明显。发布的代码甚至无法编译,更不用说给出错误的结果了)
-
时钟信号是时钟信号。您应该只将其连接到同步元件的时钟输入。不要将其连接到 FF 数据输入。顺便说一句,您的 if 语句仅在 Sys_Clk 为“1”时为真,因此 sclk_tp 和 sclk_bt 始终为高是正确的。
-
sclk_tp和sclk_bt是什么?它们是sclk_1和sclk_2吗? -
@mkrieger 是的,两者都是一样的。
-
@KelvinKalariya ...换句话说
sclk_1 <= Sys_Clk;并不意味着从现在开始sclk_1应与Sys_Clk相同。这意味着:让sclk_1获取Sys_Clk的当前值并保留它,直到我们通过执行另一个sclk_1 <= expression;为其分配另一个值。