亲爱的SO知识分子,
我只想澄清一些疑问,我正在确定迭代完整循环所需的时间。 考虑我有50Mhz时钟,这意味着时钟周期为20 ns。
现在,如果我有一个从0到500的计数器,这个计数器需要20ns x 500 = 10 us来完成整个循环吗?
三江源。
答案 0 :(得分:2)
简答:是的。
答案很长:在FPGA中,您可以编程硬件。您使用的process
语句并行运行,而不是作为C / C ++ / etc顺序运行。代码在普通的微处理器上运行。
示例:
signal sig_a : UNSIGNED(3 downto 0) := (others => '0');
signal sig_b : SIGNED(7 downto 0) := (others => '0');
signal sig_c : std_logic := '0';
process(clk)
begin
if(rising_edge(clk)) then
sig_a <= sig_a + 1;
sig_b <= sig_b - 1;
sig_c <= not sig_c;
end if;
end process;
每当你得到一个时钟信号(每20ns带50MHz时钟)时,进程内的所有三个语句都将同时执行。所有三个信号都将在触发器中实现,因此当传播延迟结束时(请参阅FPGA数据表以获取器件的确切值),所有三个信号都将具有新值。
因此,该过程不会“等待”语句完成,而是由时钟“触发”。这将在时钟的每个上升沿发生,因此要执行500次语句,您需要500个时钟周期= 50 us时10 us。