从维基百科对 VHDL的定义开始
VHDL(VHSIC 硬件描述语言)是一种用于电子设计自动化的硬件描述语言,用于描述数字和
混合信号系统,例如现场可编程门阵列和集成电路。VHDL 也可以用作通用并行编程语言。
VHDL 主要用于描述 ASIC 或 FPGA 的数字电路,但它可以用于数字模拟系统(混合信号),甚至可以用于描述并行过程。
'事件意味着数字信号的变化,即边缘。结合“1”定义上升沿。这与rising_edge(clk)函数几乎相同。这里它们之间的细微差别(对于高级用户)。
所以,如果你不使用'event,你描述的是在clk的高级别激活的进程。例如,对于 40MHz 时钟 50% 占空比,时钟在 12.5ns 期间处于“1”状态。在这 12.5ns 期间计数器会发生什么?在这 12.5ns 期间将计算多少次?最重要的是,写入这些代码的系统能够使用时钟电平递增计数器吗?可能不会,尽管您的模拟器会为您提供相同的结果。小心模拟器结果,因为模拟器与合成器不同,可以提供非常不同的结果。
VHDL 是一种通用语言,广泛用于描述数字电路。因此,每个制造商都有自己的最佳模板来描述计数器、寄存器、存储器……而clock'event 和 clock='1'或rising_edge(clk)是事实上的标准来描述灵敏度中列出的信号的上升沿列表。同样,如果您描述异步复位,则将复位信号放在灵敏度列表中,并在信号被断言时始终初始化寄存器的高或低电平,而不是在用边沿定义的瞬间。
process (clock, reset)
begin
if reset='1' then
count <= (others => '0');
elsif clock='1' and clock'event then
<count> <= <count> + 1;
end if;
end process;
总而言之,每个可编程逻辑制造商都使用一组有限且已定义的 VHDL 定义来描述他们的系统。我建议您搜索 Xilinx 或 Altera 的 VHDL 或 Verilog 模板。这些模板被合成器正确理解,以转换为特定可编程逻辑芯片或 ASIC 或其他系统的元素。