FPGA设计美学(10)HDL:软件还是硬件?

HDL:软件还是硬件?

尽管FPGA开发(数字设计)不是软件开发,但过程和管理工具却非常相似。这两项任务实质上是在创建令人难以置信的复杂逻辑结构。

Verilog示例:


always@(posedge sysclk or posedge reset) begin  if(reset) begin    igq_reg <= 1'b0;  end  else begin    igq_reg <= igg_in;  endend1.2.3.4.5.6.7.8.

同样逻辑的VHDL示例:


p_igq_reg : process( sysclk )begin  if( rising_edge ( sysclk ) )then    if( reset = '1 ')then      igq_reg <= '0 ';    else      igq_reg <= igg_in ;  end if;end process;1.2.3.4.5.6.7.8.9.

软件的定义是制造完成后可以更改的任何内容。由于可以在完成电路板制造后更改FPGA设计,因此有时将其误称为软件。但是,VHDL和Verilog不是编程语言。HDL的中文名叫硬件描述语言,英文全称为:Hardware Description Language,可见,它的名字就告诉我们,它是为了描述硬件而存在的语言。它们并不是我们在使用软件一词时所想到的东西。

HDL的应用场合有两种,一种是定制芯片,使用HDL设计完成芯片需要实现的功能,芯片制造完成流片后不可更改。另一种应用场合是FPGA设计,使用FPGA这种器件(FPGA本质上也是一种芯片,只不过它是可编程的),在其内部使用HDL语言描述各种逻辑功能的电路,并且可以随时更改设计,相比于芯片更加的灵活。

软件语言可以运行于CPU中,CPU中软件语言的运行,大家都知道,是通过执行指令顺序执行命令。

相对于CPU,下面有必要对FPGA进行简单对比:

我们可以将FPGA看作是大量未连接的数字组件的集合。这包括诸如多路复用器和逻辑门之类的基本组件,以及诸如DSP内核之类的更复杂的组件。在对FPGA进行编程时,实际上是在这些不同组件之间创建连接以创建一个复杂的系统。所有这些意味着我们在创建基于FPGA的设计时从根本上设计硬件。结果,我们可以设计出许多彼此并行运行的电路。这意味着FPGA能够同时执行大量不同的操作。与必须由CPU顺序运行的软件方法相比,这是一个主要优势。

此外,我们还可以在FPGA中对设计时序进行更多控制。我们可以估计在几纳秒内完成一个FPGA需要多长时间。同样,如果我们使用CPU来实现我们的设计,我们将无法做到这一点。这些功能的结果是,FPGA设计比微控制器中的等效实现要快得多。

缺点是它们往往更难以使用。就像我们将要看到的,这不是因为设计FPGA本质上比较困难。主要的区别是开发FPGA的人群要小得多。因此,我们可以使用的库和开放源代码要少得多。

什么是VHDL和Verilog?

VHDL或Verilog同样都是用于描述数字设计的基于文本的语言。 二者同属于HDL,即硬件描述语言,HDL使设计人员无需实际设计硬件即可描述硬件的功能。它们使设计人员可以将行为与实现在各个抽象级别上分开。他们可以准确地描述逻辑门或描述计数器的行为。

既然都是描述硬件的语言,那么该如何选择呢?关于这个问题,我在博文中也曾经有过介绍:FPGA/ASIC初学者应该学习Verilog还是VHDL?

文章中对此进行数据上的介绍,可以一看。

许多人在学习FPGA设计时遇到的第一个问题是他们应该学习VHDL还是Verilog。对于有志于成为专业FPGA设计人员的任何人,学习这两种语言将是有益的。因此,在这种情况下,一个更重要的问题是首先要学习哪种语言。

虽然这两种语言确实存在许多差异,但是对于初学者来说,这些差异可能太微妙了,无法完全欣赏。实际上,即使对于专业工程师而言,很多时间也将取决于个人喜好或公司内部已有的政策。当涉及到RTL建模时,地理通常是选择学习语言的主要决定因素。Verilog是加利福尼亚大型科技公司最常用的语言。因此,对于希望在那里工作的任何人来说,首先学习Verilog都是有意义的。在欧洲,VHDL被更广泛地使用,从这种语言开始是有意义的。

对于爱好者来说,verilog也是一个不错的选择,因为它通常不太冗长。对于门级建模,Verilog比VHDL更为流行。

这主要是由于它具有定义原语行为的固有能力。这意味着我们可以使用一种称为用户定义原语的语言功能来定义FPGA内单元的行为。这对于必须开发定义其芯片中单元行为的库的芯片供应商尤其有用。

与基于VHDL的同类产品相比,使用基于Verilog的模型进行的仿真也往往具有更快的执行时间。

其实对于HDLs:软件还是硬件这样的问题?这是一个错误的问题。VHDL可以用来描述硬件或编写软件。一个测试台可能包含文件访问例程和文本解析器。这些都是用VHDL编写的软件功能。描述数字设计的HDL只是数字电路设计,是一种硬件技能。关键的一点是,FPGA设计就是数字电路设计。为FPGA编写可靠的、可综合的、高效的、同步的VHDL,需要掌握数字设计技术。不管是HDL形式还是原理图形式,数字设计还是数字设计。

软件和硬件差异

软件是由一个或多个处理器执行的指令列表。源代码被编译为目标代码,但是它仍然是指令列表。数字设计是将逻辑电路放置在集成电路上。 VHDL被合成为逻辑电路,然后被放置在FPGA中并与布线资源连接在一起。 VHDL永远不会执行。电路的相对位置对性能至关重要。

尽管HDL语言通常被称为编程语言,但它们与传统语言几乎没有共同之处。当使用诸如C或Java之类的语言时,我们正在编写一种抽象算法或描述程序行为。CPU实际实现此程序的方式对我们来说不太可能真正有意义。相反,当我们编写HDL代码时,我们是在描述数字电路的行为。在设计FPGA时,请记住这种不同的方法,这一点很重要。

实际上,我们已经用RTL进行一次简单的RTL建模实践。我们从一个基本电路开始,然后写了一些描述电路行为的HDL。

使用RTL方法的设计由描述FPGA内部寄存器之间的数据流的代码组成。

这意味着我们编写了用触发器,逻辑门,有限状态机和RAM明确描述FPGA行为的代码。

让我们考虑下面的示例电路来演示此概念。

例如,这个电路:

FPGA的设计艺术(10)HDL是软件还是硬件?_建模


在该电路的RTL模型中,我们将编写描述两个D型触发器和非门的行为的代码。

使用VHDL对其描述为:


dff1_d <= not dff2_q; dff1:process (clock) isbegin  if rising_edge(clock) then    dff1_q <= dff1_d;  end if;end process dff1; dff2:process (clock) isbegin  if rising_edge(clock) then    dff2_q <= dff1_q;  end illend process dff2;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.

使用Verilog对其描述为:


assign dff1_d = ~dff2_q;always@(posedge clk) begin:dff1  dff1_q <= dff1_d;endalways@(posedge clk) begin:dff2  dff2_q <= dff1_q;end1.2.3.4.5.6.7.8.9.

在此代码中,第一行对非门的行为进行建模。

使用VHDL或Verilog流程对标记为dff1和dff2的触发器进行建模。

只要时钟出现上升沿,这些过程就会锁存输入的值。这符合D型触发器的预期行为。

从该示例中可以看到,我们如何描述设计中组件的行为以及它们之间的互连。

与其他类型的建模(仅定义组件之间的连接)相比,这是RTL建模的定义功能。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空