在vhdl / verilog中,建模抽象级别如何合理

时间:2016-06-08 14:08:26

标签: vhdl verilog system-verilog

我是VHDL的初学者,在一些书中他们说行为模型具有最高的抽象数据流模型具有中等抽象结构模型具有低级别抽象

他们的理由如何? 在哪些情况下应该使用哪种建模?

我假设何时使用行为这是一个顺序模型如下:

         if(all_doors_locked) then 
         ignition_start = 1;

但是其他两个模型是并发的,我无法找到它们之间的任何区别,那么

他们的抽象级别如何变化?当它们可以像上面的例子一样使用时?

2 个答案:

答案 0 :(得分:0)

行为模型:

always @ (*)
begin
  if(all_doors_locked) 
     ignition_start = 1'b1;
  else
     ignition_start = 1'b0;
end

数据流模型:

always @ (*)
begin
     ignition_start = all_doors_locked;
end

结构模型:

buf  U1(ignition_start,all_doors_locked);

查看“ 行为 ”设计,可以将其归类为一种设计方法,其中模块在高级抽象模型中进行,其中设计人员定义了所需的行为。模块和综合工具将该行为分解为RTL或结构模型。

不太抽象的是“RTL”或寄存器传输逻辑建模。这是许多从业者说“ 数据流 ”开始的地方。我们实际写硬件的地方,

assign Y = A & B; // AND operation     

最少的摘要是“ Structural ”建模,其中设计几乎完全表示为具有连接寄存器和电线的组件实例。

答案 1 :(得分:0)

结构门级是每个数字电路应该最终实现的。这是每个数字电路的硬件实现。但是,在大型设计中,人们很难获得一个非常大的网表并掌握它并理解它在做什么。

行为模型是我们人类易于理解的东西,因为很多细节都被抽象掉了。但是,并不总是可以轻松地将其转换为门。

数据流(或RTL)位于中间位置:它仍然不太难理解,它可以以自动化和系统化的方式转换为门。这就是为什么许多设计师将这种抽象级别用于现实世界的设计。

软件中的一个类比是软件应用程序(行为模型)的高级描述。这是源代码,例如C ++,类似于数据流级别,它编译的机器代码类似于结构门级网表。