1、1.1 程序的结构 library、entity、port1.2 设计的表达 architecture、signal1.3 结构表达与运算表达 1.4 数字系统的进程表达 process,第一章 VHDL对电路设计的基本描述,VHDL与数字集成电路设计,VHDL的构造体:architecture,1.2 设计的表达 architecture、signal,实体与构造体的关系,1.2 设计的表达 architecture、signal,USE WORK.std_logic_1164.ALL;ENTITY decode IS PORT(a,b,en:IN std_logic;q0,q1,q2,q3
2、:OUT std_logic);END decode;,实体与构造体的关系,1.2 设计的表达 architecture、signal,ARCHITECTURE structural OF decode IS COMPONENT inv PORT(a:IN std_logic;b:OUT std_logic);END COMPONENT;COMPONENT and3 PORT(a1,a2,a3:IN std_logic;o1:OUT std_logic);END COMPONENT;SIGNAL nota,notb:std_logic;BEGIN I1:inv PORT MAP(a,nota)
3、;I2:inv PORT MAP(b,notb);A1:and3 PORT MAP(nota,en,notb,Q0);A2:and3 PORT MAP(a,en,notb,Q1);A3:and3 PORT MAP(nota,en,b,Q2);A4:and3 PORT MAP(a,en,b,Q3);END structural;,1.2 设计的表达 architecture、signal,低级配置:对解码器实体低级形式的元件配置如下:CONFIGURATION decode_llcon OF decode IS FOR structural FOR I1:inv USE CONFIGURATIO
4、N WORK.invcon(behav);END FOR;FOR I2:inv USE CONFIGURATION WORK.invcon(behav);END FOR;FOR ALL:and3 USE CONFIGURATION WORK.and3con(behav);END FOR;END structural;END decode_llcon;,实体与构造体的关系,1.2 设计的表达 architecture、signal,USE WORK.std_logic_1164.ALL;ENTITY inv IS PORT(a:IN std_logic;b:OUT std_logic);END
5、inv;ARCHITECTURE behave OF inv ISBEGIN b=NOT(a)AFTER 5 ns;END behave;,CONFIGURATION invcon OF inv IS FOR behave END FOR;END invcon;,实体与构造体的关系,1.2 设计的表达 architecture、signal,USE WORK.std_logic_1164.ALL;ENTITY and3 IS PORT(a1,a2,a3:IN std_logic;o1:OUT std_logic);END and3;ARCHITECTURE behave OF and3 ISB
6、EGIN o1=a1 AND a2 AND a3 AFTER 5 ns;END behave;,CONFIGURATION and3con OF and3 IS FOR behave END FOR;END and3con;,1.2 设计的表达 architecture、signal,USE WORK.std_logic_1164.ALL;ENTITY counter IS PORT(load,clear,clk:IN std_logic;data_in:IN INTEGER;data_out:OUT INTEGER);END counter;ARCHITECTURE count_255 OF
7、 counter ISBEGIN PROCESS(clk).END PROCESS;END count_255;ARCHITECTURE count_64k OF counter ISBEGIN PROCESS(clk).END PROCESS;END count_64k;,CONFIGURATION small_count OF counter IS FOR count_255 END FOR;END small_count;,CONFIGURATION big_count OF counter IS FOR count_64k END FOR;END big_count;,构造体表达一个实
8、体的内部细节:运算功能、器件连接。,VHDL的构造体:architecture,1.2 设计的表达 architecture、signal,architecture arch_name of entity_name is 信号节点设置;-定义语句begin 元件连接设置;-并行语句end arch_name;,VHDL的构造体:architecture,1.2 设计的表达 architecture、signal,构造体语法要点,isbegin:说明语句部分 用于对构造体内使用的信号节点进行设置;在VHDL中,信号设置只能在构造体说明区设置,不能在任何子程序中设置;若是一个构造体内没有信号节点设
9、置,则该实体没有设计细节,没有必要存在,1.2 设计的表达 architecture、signal,VHDL中的信号设置:signal,signal signal_name:signal_type;信号名 信号类型 signal signal_name:signal_type:signal_value;信号名 信号类型 信号初值,1.2 设计的表达 architecture、signal,VHDL中的信号设置的意义,Signal 电路中的节点(连线)每个节点需要由唯一的器件驱动:信号与其驱动器件形成一一对应,可以代表器件设置;VHDL希望通过信号设置实现结构细节的指定。,1.2 设计的表达 a
10、rchitecture、signal,VHDL中的信号设置的意义,Signal 电路中的测试点 每个器件的输出应该可以进行仿真测试,信号与测试数据形成对应,信号设置可以代表寄存器设置,并为寄存器中设置初始值。,1.2 设计的表达 architecture、signal,architecture中的并行语句,beginend:执行语句部分,采用各种并行语句表达电路元件的连接设置,表达元件的输入输出关系(运算函数);beginend:表达一次具体仿真过程的开始与结束。,元件例化语句 信号赋值语句 进程语句,1.2 设计的表达 architecture、signal,并行语句对电路设计的表达方式,结
11、构描述:关注硬件结构细节的形成,电路的综合效果;运算描述(RTL描述):关注电路的输入输出对应和时间延迟关系,更注重于仿真表现;行为描述:关注电路模块的功能行为,对数据运算及流程的控制能力。,1.2 设计的表达 architecture、signal,电路设计的仿真,采用计算机系统对虚拟电路模型进行运算,了解设计中输入状态变化对输出(节点)状态变化的影响关系,也就是输入波形与输出波形之间时间关系。计算机顺序的运算表达-电路元件并行的变化 静态的运算结果-电路中波形的动态变化,1.2 设计的表达 architecture、signal,仿真计算系统的构架,1.2 设计的表达 architectu
12、re、signal,初值设定,在仿真时刻0进行:为每个端口和信号分配寄存器,并为寄存器设置初始值;对每个输入端口和信号的设置应该分别形成指令,放入时间表中,这些指令的执行时刻为时刻0;,电路设计的仿真实现,1.2 设计的表达 architecture、signal,输入波形的预设:将输入波形的变化(时刻,状态)以指令形式放入时间表;时间表中的指令按照状态变化时间先后顺序排列;同一时刻变化的指令则按照放入时间的先后顺序排列。,电路设计的仿真实现,1.2 设计的表达 architecture、signal,仿真实施:从时间表中调取排列在最前面的尚未执行的指令;根据指令改变相应信号寄存器的状态;按照
13、先后顺序排列,逐条执行与该信号有关的并行语句;若执行结果导致新的信号状态变化,则形成新的指令,添加到时间表的相应位置。执行到end,则本条指令仿真结束,继续调用时间表中下一条指令。,电路设计的仿真实现,1.2 设计的表达 architecture、signal,仿真结束条件:运算指令全部执行完毕;或者遇上强制终止的指令(包含于输入波形预设中)。仿真结束后,可以根据时间表中的记录,逐条表达出每个信号的变化时刻和变化状态,根据这些记录就可以描绘出信号变化的时间波形图。,电路设计的仿真实现,1.2 设计的表达 architecture、signal,每次仿真由状态变化指令引发,但仿真过程中并不导致任
14、何状态变化,只是形成新的状态变化指令;尽管程序语句是按照书写顺序执行,但仿真结果与程序书写顺序完全无关,而能合理地表达输入状态变化与输出状态变化之间的时间关系。,VHDL的仿真特点,1.2 设计的表达 architecture、signal,仿真过程中每个元件(语句)的时间延迟关系应该由VHDL语句直接表达;若是程序中的并行语句不含时间延迟条件,则该语句输出状态变化与其输入状态变化同时发生。这种语句的仿真通常称为逻辑验证,仅反映器件静态的输入输出关系;而若是程序中每个元件都附加了必要的时间延迟,其输出状态的变化必然滞后于输入状态的变化,这样的仿真通常称为时序仿真,或前仿真。元件的时间延迟需要根据具体物理模型进行设定。,VHDL的仿真特点,1.2 设计的表达 architecture、signal,也可以先将VHDL程序进行综合,实现了与电路基本单元的对应连接后再进行仿真,这种仿真通常称为后仿真。这种仿真不应在语句中设置时间延迟,这种设置对综合毫无意义。在综合过程中,根据电路基本单元的模型或实际测试结果,会为每个基本单元附加相应的时间延迟,并自动添加到程序语句表达中,从而输出状态的变化滞后于输入状态的变化。,VHDL的仿真特点,1.2 设计的表达 architecture、signal,HDL的结构对比,1.2 设计的表达 architecture、signal,