是什么让我选择Verilog或VHDL而不是CPLD或FPGA上的原理图设计?


13

我绝对没有可编程逻辑方面的背景知识,在我的项目中主要使用微控制器,但是最近我需要处理视频,并且微控制器的速度太慢了,因此我开始使用CPLD。

仅使用原理图设计,我就能用CPLD取得良好的结果,但是当搜索有关CPLD的信息时,我遇到了许多使用VHDL和Verilog的示例。我很好奇我可能想用其中一种语言定义设备。他们无法做原理图设计做什么?它们主要用于功能吗?

到目前为止,我仅使用CPLD,使用这些语言,FPGA设计是否比CPLD受益更多?


1
您可能会发现供应商为主流零件的Verilog和VHDL提供的综合工具。因此,选择纯粹是意见。我鼓励您同时考虑两者并决定您更喜欢哪个。Xilinx提供了两种语言的良好示例,我怀疑其他供应商也提供了这种示例。
大卫

3
您绝对应该放弃逻辑设计的原理图捕获。它认为在一开始比较容易,但这是虚幻的。我在语言方面的0.02美元:VHDL令人讨厌,请使用Verilog。
markt 2014年

@markt,您为什么认为VHDL这么糟糕?
斯坦里2014年

2
同样可以说Verilog是可憎的,使用VHDL。VHDL确实希望您说出您想要的内容,而Verilog却是您的猜测。但这只是我的0.02英镑。
Brian Drummond 2014年

1
@markt,我从VHDL开始,所以有一点我很欣赏它的强类型性。当我刚开始的时候,这迫使我思考自己想要的东西并养成良好的习惯。现在,我离SystemVerilog阵营太远了,说实话,无论哪种方式都太在乎了。
斯坦里2014年

Answers:


14

原理图设计仅在您将几个现成的模块(计数器,加法器,内存等)捆绑在一起时才有用。但是,如果没有HDL(例如VHDL或Verilog),几乎不可能实现一种实际的算法(例如,密码学哈希算法),因为无法用行为原理图来描述系统。

大多数项目都是以行为样式的HDL完成的,因为它们太复杂了,无法手工合成并使用逻辑原语进行示意性绘制。

CPLD通常用于粘合逻辑,而很少用于处理,并且逻辑通常易于实现示意图,因此当您建议基于FPGA的设计从使用HDL中受益更多时,我认为您是对的。


您可以在符号示意图系统中执行非常复杂的操作。我要说的是,尽管可以牺牲可维护性,但是可以在基于原理图的系统中实现在HDL中可以完成的所有操作。只要工具集可以定义充当单个符号的符号块,您就可以做任何事情。
康纳·沃尔夫

1
一个很好的例子是labview。这是一个象征性的编程界面,人们可以设计出使整个工厂自动化的大型复杂系统。最终的结果几乎是无法维持的,但是它是可能的(请注意:我并不是在说这是否是一个主意,只是基本的可行性)。
康纳·沃尔夫

“大多数项目都是通过行为风格的HDL完成的……”这是不被支持的,实际上并不是设计流程的工作原理。
占位符

@ConnorWolf必须不同意Labview代码的难以维护性-并不是我是一个超级粉丝。有一些确实有用的最佳实践。对我而言,通常放弃任何会引起维护问题的向前或向后兼容性的希望,而不是G语言所固有的任何东西;)
Scott Seidman 2014年

4

除了杰伊的出色答案,还有几个实践方面:

  • 虫子。原理图工具往往比其余工具集更加bug *。这可能是由于Verilog / VHDL优于行业中的原理图,因此,软件开发人员很少关注原理图的输入。
  • 速度。原理图需要先转换为HDL,然后再传递给综合工具。这可能会对构建时间产生负面影响。如果由于某种原因需要检查生成的HDL,则生成的HDL可能也不太可读。
  • 可移植性。根据所使用的供应商特定原语的数量,Verilog和VHDL或多或少在设备之间可移植。移植原理图时,您要么必须重新绘制所有内容,要么依赖提供的导入/导出功能(如果有)。

*我在Xilinx ISE中最喜欢的错误是无法选择垂直线。


2

of将HDL(硬件描述语言)作为设计输入标准有很多优点。

功能描述可以在更高级别上进行,基于HDL的设计可以综合到所选技术的门级描述中,比门级网表或示意图描述和HDL更容易理解HDL设计减少由于强类型检查而导致的错误。

硬件描述语言VHDL和Verilog是为硬件建模而设计的,旨在以更高的抽象级别进行建模,其中包括并发性,时序,层次结构,组件重用,状态行为,同步行为,异步行为,同步和固有并行性等功能。 。

在综合过程中会出现问题,将设计说明映射到特定过程并进行门实施。这要求您不能使用HDL的高级功能-您必须生成“可综合的Verilog / VHDL”

因此,您具有用于综合的HDL和用于模拟的HDL,并且可综合的子集是特定于工具的。

您不能从行为设计说明转到网表/布局。但是,您可以将设计构造为具有行为组件,这些组件也具有可以相互比较的可综合方面。您从行为开始,然后一旦工作,就重写以进行综合(这是一个子集)。从一般到具体,然后逐步建立测试平台。


1

另一个优点是HDL具有与常规编程语言相同的所有优点,因为它们可以在标准版本控制系统中使用,可以用来检查更改等。


0

除了已经说过的内容:文本表示更易于管理,尤其是在大型项目中。您可以(尽管有很大的困难)将任何可合成的HDL转换为原理图,但是使用数百行纯文本比使用数百个原理图元素更容易。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.