EDA技术与VHDL设计:第8章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5/80
例8.2 行为描述方式描述的10位二进制全加器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder1 IS PORT(a,b:IN STD_LOGIC_VECTOR(9 DOWNT源自文库 0); co:IN STD_LOGIC_VECTOR(9 DOWNTO 0); cl:OUT STD_LOGIC; sum:OUT STD_LOGIC_VECTOR(10 DOWNTO 0)); END adder1; ARCHITECTURE behave OF adder1 IS SIGNAL a_temp:STD_LOGIC_VECTOR(10 DOWNTO 0);
21/80
Moore 型有限状态机的结构框图
Mealy 型有限状态机的结构框图
22/80
选择何种有限状态机主要取决于以下几个方面:
⑴对于Moore型有限状态机来说,输出信号将在时钟信
号的触发沿到来后的几个门时延后得到输出值,同时
在该时钟周期的剩余时间内保持不变,即使输入信号
在该时钟周期内发生变化,输出信号的值也不会改变。
6/80
SIGNAL b_temp:STD_LOGIC_VECTOR(10 DOWNTO 0); SIGNAL sum_temp:STD_LOGIC_VECTOR(10 DOWNTO 0); BEGIN PROCESS BEGIN a_temp<=„0‟ & a; b_temp<=„0‟ & b; sum_temp<=a_temp+b_temp+co; sum<=sum_temp(9 DOWNTO 0); cl<=sum_temp(10); END PROCESS; END behave;
25/80
8.4.2 有限状态机描述方式
一个用来描述有限状态机功能的VHDL程序中应
该包括以下几个方面的内容:
1、至少包括一个状态信号,用来指定有限状态机的状 态; 2、状态转移指定和输出指定,对应于控制单元中与每 个控制步有关的转移条件; 3、时钟信号,一般用来进行同步; 4、同步或异步复位信号。
第8章 VHDL设计进阶
8.1 VHDL 行为描述方式
所谓行为描述,就是对设计实体的数学模型的描 述,其抽象程度远远高于寄存器描述方式和结构化描 述方式。行为描述类似于高级编程语言,当描述一个 设计实体的行为时,无须知道具体电路的结构,只须 用一组状态来描述即可。 行为描述的优点在于只需描述清楚输入与输出的 行为,而无须花费更多的精力关注设计功能的门级实 现。
16/80
COMPONENT hm PORT(a,b:IN BIT; c:OUT BIT); END COMPONENT; SIGNAL temp1,temp2:BIT; BEGIN u1:ym PORT MAP(a=>a,b=>b,c=temp1); u2:ym PORT MAP(a=>c,b=>d,c=>temp2); u3:hm PORT MAP(temp1,temp2,c=>f); END;
12/80
SIGNAL d,e,f:STD_LOGIC; BEGIN u1:h_adder PORT MAP(a=>ain,b=>bin,co=>d,so=>e); u2:h_adder PORT MAP(a=>e,b=>cin,co=>f,so=>sum); u3:or2 PORT MAP(a=>d,b=>f,c=>cout); END ARCHITECTURE one;
20/80
8.4 有限状态机设计
状态机由状态寄存器和组合逻辑电路构成,能 够根据控制信号按照预先设定的状态进行状态转移, 是协调相关信号动作,完成特定操作的控制中心。实 际就是状态转移图。 8.4.1 Moore和Mealy状态机的选择 Moore型有限状态机:输出信号仅与当前状态有关。 Mealy型有限状态机:输出信号不仅与当前状态有关, 而且还与所有的输入信号有关。
15/80
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY and_or_gate IS PORT(a,b,c,d:IN BIT; f:OUT BIT); END; ARCHITECTURE and_or_gate1 OF and_or_gate IS COMPONENT ym PORT(a,b:IN BIT; c:OUT BIT); END COMPONENT;
13/80
例8.5 结构化方式描述的逻辑函数:f=ab+cd。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ym IS PORT(a,b:IN BIT; c:OUT BIT); END ENTITY ym; ARCHITECTURE ym1 OF ym IS BEGIN c<=a and b; END;
8/80
例8.3 寄存器传输方式描述的半加器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT(A,B:IN STD_LOGIC; Co,s:OUT STD_LOGIC); END h_adder; ARCHITECTURE rt1 OF h_adder IS SIGNAL tmp1,tmp2:STD_LOGIC; BEGIN tmp1<=A & B; tmp2<=A NAND B; Co<=NOT tmp1; S<=tmp1 AND tmp2; END rt1;
9/80
例8.4 结构化描述方式描述的一位全加器。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2 IS PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END ENTITY or2;
10/80
ARCHITECTURE one OF or2 IS BEGIN c<=a OR b; END rt1; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT(ain,bin,cin:IN STD_LOGIC; cout,sum:OUT STD_LOGIC); END f_adder;
4/80
BEGIN n:=0; IF (A=„1‟) THEN n:=n+1; END IF; IF (B=„1‟) THEN n:=n+1; IF (Cin=„1‟) THEN n:=n+1; END IF; S<=S_VECTOR(n); Co<=Co_VECTOR(n); END PROCESS; END behave;
26/80
有限状态机描述方式一般有三种: 1、三进程描述方式:是指在VHDL程序的结构体中, 使用三个进程语句来描述有限状态机的功能——一个用 来描述有限状态机的次态,一个用来描述有限状态机 中的状态寄存器,另外一个用来描述有限状态机的输 出逻辑。 2、双进程描述方式:是指在VHDL程序的结构体中使 用两个进程语句来描述有限状态机的功能——一个进程 用来描述有限状态机中次态逻辑、状态寄存器和输出 逻辑中的任意两个,另外一个进程则用来描述有限状 态机的其它功能。 3、单进程描述方式:是指在VHDL程序的结构体中, 使用一个进程语句来描述有限状态机中的次态逻辑、 状态寄存器和输出逻辑。
19/80
例8.7 寄存器传输方式描述的逻辑函数:f=ab+cd。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY and_or IS PORT(a,b,c,d:IN STD_LOGIC; f:OUT STD_LOGIC); END; ARCHITECTURE rt1 OF and_or IS BEGIN PROCESS BEGIN f<=(a and b) or (c and d); END PROCESS; END;
由于Moore型有限状态机的输出与当前的输入部分无关,
因此当前输入产生的任何效果都会延迟到下一个时钟
周期。可见,Moore型有限状态机的最大优点就是可以
将输入部分和输出部分隔离开。
23/80
⑵对于Mealy型有限状态机来说,由于它的输出是输入
信号的函数,因此如果输入信号发生改变,那么输出
可以在一个时钟周期的中间发生改变。可见,与moore
17/80
8.2 VHDL RTL描述方式
所谓寄存器传输描述,是指对设计实体的描述按 照从信号到信号的寄存器传输的路径形式来进行的。
18/80
例8.6 寄存器传输方式描述的一位全加器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY full_adder IS PORT(A,B:IN STD_LOGIC; Cin:IN STD_LOGIC; Co:OUT STD_LOGIC; S:OUT STD_LOGIC); END full_adder; ARCHITECTURE rt1 OF full_adder IS CONSTANT tmp1,tmp2:STD_LOGIC; BEGIN tmp1<=A XOR B; tmp2<=tmp1 AND Cin; S<=tmp1 XOR Cin; Co<=tmp2 OR (A AND B); END rt1;
型有限状态机相比,它对输入信号的变化相应要早一
个时钟周期。但是需要注意的是,它也会将输入端口
的噪声传递给输出信号。
⑶在实际的应用过程中,Moore型有限状态机可能要比
相应的Mealy型有限状态机需要更多的状态。
24/80
有限状态机与CPU相比主要有两个方面的优点: 1、CPU在实现控制功能中,需要很多操作指令步和硬 件操作单元。而在有限状态机中,控制状态存储在多 个触发器中,表示状态转移和控制功能的代码存储在 门级网络中。因此不难看出,有限状态机的性能要优 于CPU。 2、有限状态机的逻辑通常十分适用于可编程逻辑器件, 通过恰当的VHDL描述和EDA工具的综合,一般可以生 成性能极优的有限状态机,从而使其在执行时间、运 行速度和占用资源等方面优于由CPU实现的设计方案。
14/80
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY hm IS PORT(a,b:IN BIT; c:OUT BIT); END ENTITY hm;
ARCHITECTURE hm1 OF hm IS BEGIN c<=a or b; END;
7/80
8.2 VHDL 结构化描述方式
所谓结构化描述,是指在多层次的设计中,通过 调用库中的元器件或已经设计好的模块来完成设计实 体功能的描述。在结构体中,描述只表示元器件和元 器件之间 的互连。当引用库中不存在的元器件时,必 须首先进行元器件的创建,然后将其放在工作库中, 这样才可以通过调用工作库来引用元器件。在引用元 器件时,首先要在结构体说明部分进行元器件的说明, 然后才能在使用元器件时进行元器件例化。
2/80
例8.1 行为描述方式描述的一位全加器。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
3/80
ENTITY full_adder IS PORT(A,B:IN STD_LOGIC; Cin:IN STD_LOGIC; Co:OUT STD_LOGIC; S:OUT STD_LOGIC); END full_adder; ARCHITECTURE behave OF full_adder IS BEGIN PROCESS(A,B,Cin) VARIABLE n:INTEGER RANGE 0 TO 3; CONSTANT s_vector:STD_LOGIC_VECTOR(0 TO 3):=“0101”; CONSTANT Co_vector:STD_LOGIC_VECTOR(0 TO 3):=“0011”;
11/80
ARCHITECTURE one OF f_adder IS COMPONENT h_adder PORT(a,b:IN STD_LOGIC; co,so:OUT STD_LOGIC); END COMPONENT;
COMPONENT or2 PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT;
例8.2 行为描述方式描述的10位二进制全加器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder1 IS PORT(a,b:IN STD_LOGIC_VECTOR(9 DOWNT源自文库 0); co:IN STD_LOGIC_VECTOR(9 DOWNTO 0); cl:OUT STD_LOGIC; sum:OUT STD_LOGIC_VECTOR(10 DOWNTO 0)); END adder1; ARCHITECTURE behave OF adder1 IS SIGNAL a_temp:STD_LOGIC_VECTOR(10 DOWNTO 0);
21/80
Moore 型有限状态机的结构框图
Mealy 型有限状态机的结构框图
22/80
选择何种有限状态机主要取决于以下几个方面:
⑴对于Moore型有限状态机来说,输出信号将在时钟信
号的触发沿到来后的几个门时延后得到输出值,同时
在该时钟周期的剩余时间内保持不变,即使输入信号
在该时钟周期内发生变化,输出信号的值也不会改变。
6/80
SIGNAL b_temp:STD_LOGIC_VECTOR(10 DOWNTO 0); SIGNAL sum_temp:STD_LOGIC_VECTOR(10 DOWNTO 0); BEGIN PROCESS BEGIN a_temp<=„0‟ & a; b_temp<=„0‟ & b; sum_temp<=a_temp+b_temp+co; sum<=sum_temp(9 DOWNTO 0); cl<=sum_temp(10); END PROCESS; END behave;
25/80
8.4.2 有限状态机描述方式
一个用来描述有限状态机功能的VHDL程序中应
该包括以下几个方面的内容:
1、至少包括一个状态信号,用来指定有限状态机的状 态; 2、状态转移指定和输出指定,对应于控制单元中与每 个控制步有关的转移条件; 3、时钟信号,一般用来进行同步; 4、同步或异步复位信号。
第8章 VHDL设计进阶
8.1 VHDL 行为描述方式
所谓行为描述,就是对设计实体的数学模型的描 述,其抽象程度远远高于寄存器描述方式和结构化描 述方式。行为描述类似于高级编程语言,当描述一个 设计实体的行为时,无须知道具体电路的结构,只须 用一组状态来描述即可。 行为描述的优点在于只需描述清楚输入与输出的 行为,而无须花费更多的精力关注设计功能的门级实 现。
16/80
COMPONENT hm PORT(a,b:IN BIT; c:OUT BIT); END COMPONENT; SIGNAL temp1,temp2:BIT; BEGIN u1:ym PORT MAP(a=>a,b=>b,c=temp1); u2:ym PORT MAP(a=>c,b=>d,c=>temp2); u3:hm PORT MAP(temp1,temp2,c=>f); END;
12/80
SIGNAL d,e,f:STD_LOGIC; BEGIN u1:h_adder PORT MAP(a=>ain,b=>bin,co=>d,so=>e); u2:h_adder PORT MAP(a=>e,b=>cin,co=>f,so=>sum); u3:or2 PORT MAP(a=>d,b=>f,c=>cout); END ARCHITECTURE one;
20/80
8.4 有限状态机设计
状态机由状态寄存器和组合逻辑电路构成,能 够根据控制信号按照预先设定的状态进行状态转移, 是协调相关信号动作,完成特定操作的控制中心。实 际就是状态转移图。 8.4.1 Moore和Mealy状态机的选择 Moore型有限状态机:输出信号仅与当前状态有关。 Mealy型有限状态机:输出信号不仅与当前状态有关, 而且还与所有的输入信号有关。
15/80
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY and_or_gate IS PORT(a,b,c,d:IN BIT; f:OUT BIT); END; ARCHITECTURE and_or_gate1 OF and_or_gate IS COMPONENT ym PORT(a,b:IN BIT; c:OUT BIT); END COMPONENT;
13/80
例8.5 结构化方式描述的逻辑函数:f=ab+cd。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ym IS PORT(a,b:IN BIT; c:OUT BIT); END ENTITY ym; ARCHITECTURE ym1 OF ym IS BEGIN c<=a and b; END;
8/80
例8.3 寄存器传输方式描述的半加器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT(A,B:IN STD_LOGIC; Co,s:OUT STD_LOGIC); END h_adder; ARCHITECTURE rt1 OF h_adder IS SIGNAL tmp1,tmp2:STD_LOGIC; BEGIN tmp1<=A & B; tmp2<=A NAND B; Co<=NOT tmp1; S<=tmp1 AND tmp2; END rt1;
9/80
例8.4 结构化描述方式描述的一位全加器。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2 IS PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END ENTITY or2;
10/80
ARCHITECTURE one OF or2 IS BEGIN c<=a OR b; END rt1; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT(ain,bin,cin:IN STD_LOGIC; cout,sum:OUT STD_LOGIC); END f_adder;
4/80
BEGIN n:=0; IF (A=„1‟) THEN n:=n+1; END IF; IF (B=„1‟) THEN n:=n+1; IF (Cin=„1‟) THEN n:=n+1; END IF; S<=S_VECTOR(n); Co<=Co_VECTOR(n); END PROCESS; END behave;
26/80
有限状态机描述方式一般有三种: 1、三进程描述方式:是指在VHDL程序的结构体中, 使用三个进程语句来描述有限状态机的功能——一个用 来描述有限状态机的次态,一个用来描述有限状态机 中的状态寄存器,另外一个用来描述有限状态机的输 出逻辑。 2、双进程描述方式:是指在VHDL程序的结构体中使 用两个进程语句来描述有限状态机的功能——一个进程 用来描述有限状态机中次态逻辑、状态寄存器和输出 逻辑中的任意两个,另外一个进程则用来描述有限状 态机的其它功能。 3、单进程描述方式:是指在VHDL程序的结构体中, 使用一个进程语句来描述有限状态机中的次态逻辑、 状态寄存器和输出逻辑。
19/80
例8.7 寄存器传输方式描述的逻辑函数:f=ab+cd。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY and_or IS PORT(a,b,c,d:IN STD_LOGIC; f:OUT STD_LOGIC); END; ARCHITECTURE rt1 OF and_or IS BEGIN PROCESS BEGIN f<=(a and b) or (c and d); END PROCESS; END;
由于Moore型有限状态机的输出与当前的输入部分无关,
因此当前输入产生的任何效果都会延迟到下一个时钟
周期。可见,Moore型有限状态机的最大优点就是可以
将输入部分和输出部分隔离开。
23/80
⑵对于Mealy型有限状态机来说,由于它的输出是输入
信号的函数,因此如果输入信号发生改变,那么输出
可以在一个时钟周期的中间发生改变。可见,与moore
17/80
8.2 VHDL RTL描述方式
所谓寄存器传输描述,是指对设计实体的描述按 照从信号到信号的寄存器传输的路径形式来进行的。
18/80
例8.6 寄存器传输方式描述的一位全加器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY full_adder IS PORT(A,B:IN STD_LOGIC; Cin:IN STD_LOGIC; Co:OUT STD_LOGIC; S:OUT STD_LOGIC); END full_adder; ARCHITECTURE rt1 OF full_adder IS CONSTANT tmp1,tmp2:STD_LOGIC; BEGIN tmp1<=A XOR B; tmp2<=tmp1 AND Cin; S<=tmp1 XOR Cin; Co<=tmp2 OR (A AND B); END rt1;
型有限状态机相比,它对输入信号的变化相应要早一
个时钟周期。但是需要注意的是,它也会将输入端口
的噪声传递给输出信号。
⑶在实际的应用过程中,Moore型有限状态机可能要比
相应的Mealy型有限状态机需要更多的状态。
24/80
有限状态机与CPU相比主要有两个方面的优点: 1、CPU在实现控制功能中,需要很多操作指令步和硬 件操作单元。而在有限状态机中,控制状态存储在多 个触发器中,表示状态转移和控制功能的代码存储在 门级网络中。因此不难看出,有限状态机的性能要优 于CPU。 2、有限状态机的逻辑通常十分适用于可编程逻辑器件, 通过恰当的VHDL描述和EDA工具的综合,一般可以生 成性能极优的有限状态机,从而使其在执行时间、运 行速度和占用资源等方面优于由CPU实现的设计方案。
14/80
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY hm IS PORT(a,b:IN BIT; c:OUT BIT); END ENTITY hm;
ARCHITECTURE hm1 OF hm IS BEGIN c<=a or b; END;
7/80
8.2 VHDL 结构化描述方式
所谓结构化描述,是指在多层次的设计中,通过 调用库中的元器件或已经设计好的模块来完成设计实 体功能的描述。在结构体中,描述只表示元器件和元 器件之间 的互连。当引用库中不存在的元器件时,必 须首先进行元器件的创建,然后将其放在工作库中, 这样才可以通过调用工作库来引用元器件。在引用元 器件时,首先要在结构体说明部分进行元器件的说明, 然后才能在使用元器件时进行元器件例化。
2/80
例8.1 行为描述方式描述的一位全加器。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
3/80
ENTITY full_adder IS PORT(A,B:IN STD_LOGIC; Cin:IN STD_LOGIC; Co:OUT STD_LOGIC; S:OUT STD_LOGIC); END full_adder; ARCHITECTURE behave OF full_adder IS BEGIN PROCESS(A,B,Cin) VARIABLE n:INTEGER RANGE 0 TO 3; CONSTANT s_vector:STD_LOGIC_VECTOR(0 TO 3):=“0101”; CONSTANT Co_vector:STD_LOGIC_VECTOR(0 TO 3):=“0011”;
11/80
ARCHITECTURE one OF f_adder IS COMPONENT h_adder PORT(a,b:IN STD_LOGIC; co,so:OUT STD_LOGIC); END COMPONENT;
COMPONENT or2 PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT;