首页 微博热点 正文

FPGA高级编程语言VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|首页

VHDL言语是指超高速集成电路硬件描绘言语

VHDL(Very High Speed Integrated Circuit Hardware Description Language)

是一种比较常用的FPGA高档编程言语

而VHDL程序一般是由以下五部分组成的:

  1. 库(Library)
  2. 包(Package)
  3. 实翡翠判定体(Entit老有所依y)
  4. 结构体(Architecture)
  5. 装备(Configuration)

其间,实体和结构体两大部分组成程序规划的最基本单元。

实体与结构体联系

实体比较简单,仅仅界说了输入输出端口,与相应的FPGA芯片引脚对对应,也相当于供给一个与外部环境动态交互的通道。

而结构体age(Architecture)则比较复杂,要是把实体比作一个黑盒子的话,则结构体能够理解为黑盒FPGA高档编程言语VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|主页 子的内部结构。

实体

结构体详细指明晰相对应的规划实体的行为界说了实体的逻辑功用和行为规则了内部模块与模块之间的衔接联系。

结构体界说格局如下:

Architecture 结构体名 of 实体名 is
声明句子(声明结构体中用到的信号、数据等)
Begin
功用描绘句子(5种句子结构)
End Architecture 结构体名

结构体构成图如下图所示,结构体的功用描绘句子首要有5种结构组成,在实践运用中不是每一种都要用到,仅仅根据需求挑选相应的句子结构即可。

结构体的组成

结构体的描绘办法

结构体描绘有下面三种办法:

  1. Structure(结构)描绘:描绘规划单元的硬件结构,即该硬件是怎么构成的,类似于数字电路中的逻辑图描绘。
  2. Date Flow(数据流):类似于寄存器传输级的办法描绘数据的传输和改换,以规则规划中的各个寄存器办法为特征,然后在寄存器之间刺进组合逻辑。
  3. Behavior Process(行为描绘):只描绘电路的功用或许电路行为,不指明或触及完成这些行为的硬件结构,与数字电路中的逻辑表达式描绘类似。

下面经过运用这三种描绘办法,描绘同一个二选一挑选器,输入为a,b,挑选信号为s,输出为y。

1、二FPGA高档编程言语VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|主页 选一挑选器的Structure(结构)描绘:

结构图

例1:VHDL代码如下所示:

architecture one of mux21 is
signal d微信大众号渠道,e:bit;
begin
d<=a and (not)s;
e<=b and s;
y<=d or e;
end architecture one;

2、二选一挑选器的Date Flow(数据流)描绘:

例2:VHDFPGA高档编程言语VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|主页 L代码如下所示:

architecture one of mux21 isFPGA高档编程言语VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|主页 
begin
y<=a when s='0' else
b;
end architecture one;

3、二选一挑选器的Behavior Process(行为描绘)描绘:

例3:VHDL代码如下所示:

architecture one of mux21 is
begin
y<=(a and (not s) or (b and s);
end architecture one

下面首要解说功用描绘语热带鱼句中的五种句子结构的详细用法,以及他们之间的差异。

功用描绘的五种语法结构

1、块句子(block):

块句子是将一系FPGA高档编程言语VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|主页 列并行描绘句子进行组合,意图是改进并行句子及其结构的可读性,能够使结构层次明显,结构愈加清晰。

例4:结构举万能奇才例VHDL代码如下所示:

a: out1<='1' after 2 ns;
blok1: block爸爸不要了
begin
b: o黄苏支案子ut2<='1' after 2 ns;
c: out3<='1' after 2 ns;
end block blok1

上面例4的代码等价于下面例5所示的代码,能够看出,块不影响代码的履行次序。

例5:VHDL代码如下所示:

a: out1<='1' after 2 ns;
b: out2<='1' after 2 ns;
c: out3<='1' after 2 ns;

2、进程(Process)句子

首要,进程是界说次序句子的模块,用从外部接纳的信号值,或许运用内部的运算数据向其它的信号进行赋值。

留意:一个结构体能够又多个进程,进程之间是并行联系,而进程内部是次序履行的。

运用例6程序进行阐明:仍是二选一电路

例6:VHDL代码如下所示:

architectur阿杰e rt1 of mux21 is 
begin
process(a,b,sel)
begin
if (sel ='1') th赤军兵士牵挂毛译东en
y<=a;
else
y<=b;
end if
end process
end rt1

process后边括号内的(a,b,sel)归于灵敏列表,也就是说,只需a,b,sel三个信号,恣意一个改变process都会被履行。其实,除了运用灵敏列表这种办法,还有一种运用wait on的办法,他们是彻底等效的,而且只能二选一,不能一起运用。看下面的例7,与上面例6彻底等效。

例7高兴生产线歪歌:VHDL社火代码如下所示:

architecture rt1 of mux21 is 
begin
process
begin
wait on a,b,sel;
if (sel ='1') then
y<=a;
else
y<=b;
end if
end process
end rt1

其间用到了wait句子,在今后的文章会专门进行解说,例程中的wait on是指等候a,b,sel这三个信号中的任何一个发生改变。

3、信号赋值句子

之前文章让让子《FPGA高档言语编程VHDL中数据目标介绍》中关于信号(signal)章节讲的十分清楚了,这儿不再过多重复。有需求的能够翻看。

4、子程序调用句子

首要用于调用函数或许进程,而且将成果赋值给信号。这个跟其它言语是相同的,不再介绍。

5、元件例化句子

首要是用来调用别的一个实体所描绘的电路,元件例化前需求进行阐明,再进行例化,结构如下所示:能够看出元件阐明与实体阐明的编写办法是相同的。

architecture str of entity_name is
component 元件名 is
generic 阐明
port(端口名: 形式 刘也行女友王诺诺信号类型;
端口名: 形式 信号类型);
end componnet 元件名

举例阐明,例8为已有电路的实体程序,例9为调用例8实体进行元件阐明。

例8:VHDL代码如下所示:

library纤夫的爱 ieee;
use ieee.std_logic_1164.all;
entity and2 is
port(a,b: in std_logic;
y: out std_log陈亚格ic);
end entity and2;
architecture rtl of and2 is
begin
y<=a and b;
end architecture rtl;

例9:VHDL代码如下所示:

compon小米客服ent and2 is
port(a,b: in std_logic;
y: out std_logic);
end component and2;

元件例化句子书写格局:

元件编号:元件名 port map(信号对应表);

信号对应有两marvel种办法:方位映射和称号映射

方位映射要求按已有元件的各个端口次序排列衔接点,例如:

u1: and2 port map(d0,sel,aa);

称号映射关于方位没有要求,要求称号逐个衔接即可。例如:

u2: and2 port map(a=>d0,b=>sel,y=>aa);

关于元件例化完好的举例完成下图所示功用(X先与Y再取反经过Z输出):

Z=not(X and Y)

VHDL代码如下例9所示,首要经过例化调用例8中界说的实体 and2与取反函数not来完成,首要对两个实体进行了例化说FPGA高档编程言语VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|主页 明,然后进行例化调用,完成上图结构的功用FPGA高档编程言语VHDL学习体系结构部分-manbetx万博_万博manbetx官网电脑|主页 。

例9:VHDL代码如下所示:

library ieee;
use ieee.std_logic_1164.all;
entity knand2 is
port(X,Y:in std_logic;
Z:out std_logic);
end entity knand2
architecture str of knand2 is
component and2 is
port(a,b: in std_logic;
y: out std_logic);
end component and2;
component not is
port(a: in std_logic;
b: out std_logic);
end component not
signal temp: std_logic;
begin
a1: and2 port map(X,Y,temp);
a2: not port map(temp,Z);
end architecture str

总结

关于VHDL中结构体(Architecture)的解说到此结束,其实,结构体是VHDL中一个十分重要的概念,只需把握好它的5种功用描绘句子,才干学好VHDL残杀编程。

感谢您的阅览,相关问题请留言评论。