gpt4 book ai didi

vhdl - 在 VHDL 中什么时候使用 Process 语句合适?

转载 作者:行者123 更新时间:2023-12-05 08:24:24 27 4
gpt4 key购买 nike

我现在正在经历第二次或第三次学习 VHDL 的阶段。 (这次配备了一个非常好的免费 e-book )我终于开始“得到”它的相当一部分。现在我正在学习行为风格和流程陈述,其中大部分内容都很有意义。但是,我在很多地方都读到过,除了某些情况外,要避免使用进程。我的意思是,从理论上讲,难道一切都不能在数据流而不是行为中实现吗?

究竟什么时候应该使用过程语句是显而易见的?

最佳答案

流程声明非常有用,在什么情况下被告知不要使用它们?

有许多不同的情况需要使用过程语句,我将在下面概述其中的一些:

过程语句(用于综合)最常见的用法之一是描述与时钟信号同步的逻辑,例如,一个简单的计数器在未处于复位状态时在每个时钟周期递增,可以描述为:

DATA_REGISTER : process(CLOCK)
begin
if rising_edge(CLOCK) then
if RESET = '1' then
COUNTER <= (others => '0');
else
COUNTER <= COUNTER + 1; --COUNTER is assumed to be of type 'unsigned'
end if;
end if;
end process;

随着您的设计变得越来越复杂,您将不可避免地在某个时候实现状态机,这将采用一个或多个过程,具体取决于您选择实现的状态机类型。

对于行为代码,您可以结合使用进程和等待语句来生成测试向量或模拟真实系统的行为。这是从我的一个测试平台中获取的 100MHz 时钟发生器的一个非常基本的示例:

architecture BEH of ethernet_receive_tb is  
signal s_clock : std_logic := '0'; --Initial assignment to clock kicks off the process.
begin
CLOCKGEN : process(s_clock)
begin
s_clock <= not s_clock after 5 NS;
end process CLOCKGEN;

...

您还可以用进程描述异步逻辑,在这种情况下,您需要将在进程中读取的所有信号都包含在敏感列表中,并且您需要确保始终定义任何输出以避免推断锁存器。

IF_ELSE: process (SEL, A, B)
begin
F <= B; -- Default assignment
if SEL = '1' then
F <= A;
end if;
end process;

希望您能看到流程语句非常有用,并且您会在许多不同的情况下使用它。我希望这能回答您的问题!

关于vhdl - 在 VHDL 中什么时候使用 Process 语句合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10223134/

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