我碰到过VHDL中的两种风格的进程语句。等到rising_edge(clk)vs如果rising_edge(clk)
process(clk)
begin
if rising_edge(clk)
....do something....
另一种是
process
begin
wait until rising_edge(clk)
....do something....
什么是每种方法的优点和缺点。
我碰到过VHDL中的两种风格的进程语句。等到rising_edge(clk)vs如果rising_edge(clk)
process(clk)
begin
if rising_edge(clk)
....do something....
另一种是
process
begin
wait until rising_edge(clk)
....do something....
什么是每种方法的优点和缺点。
假设...
第二个示例的一部分没有任何wait
语句,这两个表单在语义上是等价的。
它们在模拟中的表现完全相同。
但是,第一种形式是用于合成的推荐样式,并且会被许多人认为更具可读性。
由谁推荐?支持这两种形式,请参阅撤回的IEEE Std 1076.6-2004,6.1.3.1灵敏度列表和一个时钟的进程中的边缘敏感存储,以及使用单个等待语句的6.1.3.2边缘敏感存储。区别在于流程是否有一个灵敏度列表,暗示“等待时钟;'作为流程的最后一个顺序语句(IEEE标准1076-2008 11.3流程语句)。哪种形式是纯粹的编码风格选择, – user1155120
@user我手边没有任何参考,但有_synthesis_工具,它不会用'wait'语法推断出合适的FF。 – wap26
他们不会是1076.6兼容。 – user1155120
基本上,第二种类型只在仿真中有用。等待语句需要时间在流程内的不同语句之间流动,这与硬件合成过程不同。它通常会出现在模拟刺激或诊断过程中。在第一种形式中,进程由时钟事件触发,并在一个步骤中运行,表示同步逻辑。
vs'等到clk ='1'' –