第5章 VHDL设计进阶修改
VHDL设计进阶实验与设计
BEGIN
CASE A IS
WHEN "0000" => LED7S <= "0111111" ; WHEN "0001" => LED7S <= "0000110" ;
WHEN "0010" => LED7S <= "1011011" ;
实 验 与 设 计 WHEN "0011" => LED7S <= "1001111" ;
WHEN "100" => BT <= "00010000" ; A <= 9 ;
WHEN "101" => BT <= "00100000" ; A <= 11 ;
WHEN "110" => BT <= "01000000" ; A <= 13 ;
WHEN "111" => BT <= "10000000" ; A <= 15 ;
(3) 实验内容1:说明例5-21中各语句的含义,以及该例的整体功能。在MAX+plusII上对 该例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
提示:用输入总线的方式给出输入信号仿真数据,仿真波形示例图如图5-22所示。
Y IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
WHEN "1110" => LED7S <= "1111001" ;
第五章_VHDL设计进阶1
KX
康芯科技
KX
康芯科技
How Many Registers?
ENTITY reg1 IS PORT ( d : in BIT; clk : in BIT; q : out BIT); END reg1; ARCHITECTURE reg1 OF reg1 IS BEGIN PROCESS (clk) VARIABLE a, b : BIT; BEGIN IF clk='1' AND clk’event THEN a := d; b := a; q <= b; END IF; END PROCESS; END reg1;
EDA技术实用教程
第5章 VHDL设计进阶
KX
康芯科技
*信号 signal *变量 variable *常量 constant *半定制 semi-custom *全定制 full-custom
KX
康芯科技
逻辑综合器 logic synthesizer 逻辑分割器 partitioner 适配器 fitter 时序分析 timing analyzer 装配器 assembler
KX
康芯科技
5.2 VHDL设计实例及其语法内涵
5.2.2 移位模式可控的8位移位寄存器设计
5.2.3
位矢中‘1‟码个数统计电路设计
KX
康芯科技
KX
康芯科技
5.2 VHDL设计实例及其语法内涵
5.2.3 位矢中‘1‟码个数统计电路设计
5.2.3
位矢中‘1‟码个数统计电路设计
KX
康芯科技
LOOP语句的常用表达方式有两种:
KX
康芯科技
【例5-11】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC); END mux4; ARCHITECTURE body_mux4 OF mux4 IS BEGIN process(i0,i1,i2,i3,a,b) variable muxval : integer range 7 downto 0; begin muxval := 0; if (a = '1') then muxval := muxval + 1; end if; if (b = '1') then muxval := muxval + 2; end if; case muxval is when 0 => q <= i0; when 1 => q <= i1; when 2 => q <= i2; when 3 => q <= i3; when others => null; end case; end process; END body_mux4;
第5章 VHDL设计进阶
变量(Variable)
定义格式: 定义格式: VARIABLE 变量名 : 数据类型 := 初始值 ; 临时数据,没有物理意义 只能在Process和Function中定义,并只在 其内部有效 要使其全局有效,先转换为Signal。
………… ARCHITECTURE body_mux4 OF mux4 IS BEGIN process(i0,i1,i2,i3,a,b) variable muxval : integer range 7 downto 0; begin muxval := 0; if (a = '1') then muxval := muxval + 1; end if; if (b = '1') then muxval := muxval + 2; end if; case muxval is when 0 => q <= i0; when 1 => q <= i1; when 2 => q <= i2; when 3 => q <= i3; when others => null; end case; end process; END body_mux4;
信号(Signals)
没有方向性,可给它赋值,也可当作 输入。 Port也是一种隐含的信号。 信号的使用和定义范围是实体、结构 体和程序包。
数据对象DATA OBJECTS 数据对象
进程只对信号敏感,敏感表中不能包括 变量。 信号的赋值需要经历一个特定的延时, 即δ延时。 在进程中可允许同一信号由多个驱动源 (赋值源),但只有最后的赋值起作用。
第5章 VHDL高级设计技术
n 1
D Q
fn
D
Q
1
D
fn1
Q
VHDL高级设计技术VHDL高级设计技术-逻辑复用技术
逻辑复用是指在完成相同的功能下,尽量减少所使用的 逻辑单元的数目。这样在不影响设计性能的情况下,可以 降低资源的使用。下面通过一个共享加法器的例子来说明 这个问题。
VHDL高级设计技术VHDL高级设计技术-逻辑复用技术
VHDL高级设计技术VHDL高级设计技术-并行处理技术
串行设计是最常见的一种设计。当一个功能模块对输入 的处理是分步骤进行的,而且后一步骤只依赖于前一步骤 的结果时,功能模块的设计就需要采用串行设计的思想。 并行处理就是采用几个处理流程同时处理到达的负载, 提高处理的效率。并行处理要求这些处理任务之间是不相 关的,彼此之间是不互相依赖的,如果存在相互依赖就很 难用并行处理的方法。
VHDL高级设计技术-VHDL代码风格 VHDL高级设计技术-VHDL代码风格
其次,说明功耗问题。 随着PLD工作频率的显著提高,功耗成为一个引起 随着PLD工作频率的显著提高,功耗成为一个引起 EDA设计人员密切关注的问题。 EDA设计人员密切关注的问题。 PLD 由于PLD工作频率的提高,逻辑单元的切换频率也相应 由于PLD工作频率的提高,逻辑单元的切换频率也相应 提高,相应的会引起PLD功耗增大。 提高,相应的会引起PLD功耗增大。 这样就存在着频率和功耗之间的矛盾,因此必须在逻 辑单元的切换速度和功耗之间进行权衡,通过合理的设 计,减少逻辑单元不必要的切换,这样可以在一定程度上 降低功耗。
VHDL高级设计技术-VHDL代码风格 VHDL高级设计技术-VHDL代码风格
VHDL代码风格是指两个方面的内容: VHDL代码风格是指两个方面的内容: 一方面是VHDL语言描述规范,即在使用VHDL语言描 一方面是VHDL语言描述规范,即在使用VHDL语言描 述逻辑行为时必须遵守VHDL语言的词法和句法规范,该 述逻辑行为时必须遵守VHDL语言的词法和句法规范,该 EDA PLD 描述风格不依赖于EDA软件工具和可编程逻辑器件PLD类 描述风格不依赖于EDA软件工具和可编程逻辑器件PLD类 型,仅仅是从VHDL语言出发的代码风格; 型,仅仅是从VHDL语言出发的代码风格; 另一方面则是VHDL语言对于一特定逻辑单元的描述, 另一方面则是VHDL语言对于一特定逻辑单元的描述, 即用VHDL语言的哪一种描述风格进行逻辑行为描述,才 即用VHDL语言的哪一种描述风格进行逻辑行为描述,才 能使电路描述得更准确,布局布线后产生的电路设计最 优,该描述风格不仅需要关注EDA软件在语法细节上的差 优,该描述风格不仅需要关注EDA软件在语法细节上的差 异,还要紧密依赖于固有的硬件结构。
VHDL设计进阶
§顺序条件语句IF 语句
1、用于门闩控制的语句: 、用于门闩控制的语句:
格式
3、用于多选控制的IF语句: 、用于多选控制的 语句 语句:
格式
IF 条件句 THEN <顺序处理语句> END IF ;
IF 条件句1 THEN <顺序处理语句1>; ELSIF 条件句2 THEN <顺序处理语句2>; : ELSIF 条件句n-1 THEN <顺序处理语句n-1>; ELSE <顺序处理语句n>; END IF;
(3),进程必须由敏感信号的变化来启动 进程既可以通过敏感信号的变化来启动,也可以由满足条件的 WAIT 语句来启动.遇到不满足条件的WAIT语句后被挂起. (1)进程必须定义显式或隐式的敏感信号. 注意 (2)但是在一个使用了敏感表的进程(或由该进程所调用的 子程序)中不能含有任何WAIT语句. (4),进程语句本身是并行语句 进程语句引导的属于顺序语句, 但同一结构体中的不同进程是并行运行的.或者说是根据相应的 敏感信号独立运行. (5),信号是多个进程的通信线 多个进程能并行同步运行,进程间的通信是通过信号实现的. 所以,任一进程的进程说明部分不允许定义信号. (6),一个进程只允许描述对应于一个时钟信号的同步时序逻辑 时序电路必须由进程中的顺序语句描述,而此顺序语句必须由不完全的 条件语句构成.尽管在同一进程中可顺序放置多个条件语句,但是只能 放置一个含有时钟边沿检测语句的条件语句.
3,进程要点 (1) PROCESS为一无限循环语句 在同一结构提中的任一进程是一个独立的无限循环结构,但 进程中不必放入返回语句,它的返回是自动的。 进程只有两种运行状态,即执行状态和等待状态。 (2)PROCESS中的顺序语句具有明显的顺序/并行运行双重性 进程的顺序语句的执行方式与软件语言的顺序执行方式有很大的不同。 软件语句的每一条语句的执行是按CPU的机器周期的节拍顺序执行的。 进程中,一个执行状态的运行周期(进程的启动执行到遇到END PROCESS为止所花的时间与任何外部因素都无关。 同一个进程中,10条语句和100条语句的执行时间是一样的。 例: PROCESS (abc) BEGIN abc发生改变时首先执行语句 CASE abc IS CASE abc IS ,即顺序执行最 WHEN “0000” => so<=“010” ; 前面的语句,若此时abc=“1110” WHEN “0001” => so<=“111” ; 立即执行so<=“100”,不用象软件 …………. 语言逐条比较.这就是并行运行 WHEN “1110” => so<=“100” ; 的特点. WHEN OTHERS => NULL ; END CASE; END PROCESS;
第5章 VHDL设计进阶-ST
5.4 并行赋值语句讨论
并行赋值语句 缩略的进程语句 并行赋值语句同顺 序赋值语句都会有一个σ延时 并行赋值语句也会包含 类似进程的顺序语句特性。
5.5 IF语句概述
IF语句是一种条件语句,其可根据语句中设置的一种或 多种条件,有选择地执行指定的顺序语句。 IF语句中至少应有一个条件句,条件句可以是一个 BOOLEAN类型的标识符或者其判断结果的数据类型为 BOOLEAN类型。
5.1.2 变量 变量具有局限性 不能将信息带出其定义的当前结构 只能在进程和子程序(FUNCTION和PROCEDURE)中使用 变量的赋值操作是实时的,不存在延时行为 变量的主要作用是在进程中作为临时的数据存储单元
变量可定义初始值,仅对HDL仿真器有效
5.1 数 据 对 象
5.1.3 信号 信号具有全局性 硬件特征明显 作为设计实体中并行语 句模块间的信息交流通道
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
一个’Z’表示一个逻辑位 ‘Z’在综合中表示一个不确定的值,因此不同的综合器可能会给 出不同的综合结果。 VHDL语法规定不区分大小写,但IEEE库中对STD_LOGIC的预 定义将高阻态确定为’Z’,因此高阻态’Z’必须大写。
5.6 半整数与奇数分频电路设计
接下页
5.6 半整数与奇数分频电路设计
接上页
5.6 半整数与奇数分频电路设计
奇数次分频(N)电路设计思路与步骤: 1. 设置2个相同的加1计数器,其中一个以CLK上升沿触发, 另一个以CLK下降沿触发; 2. 2个计数器分别在取得(N-1)/2和N-1时进行翻转; 3. 将2个计数器的输出进行相或运算,可得出占空比为50% 的技术分频时钟。
第5章 VHDL设计进阶
Entity comparator is Port(a,b:in bit; g:out bit); End comparator; Architecture behavioral of comparator is Begin comp:PROCESS (a,b) 行为描述:对设计实体 按算法的路径来描述, BEGIN IF a= b THEN G<=‘1’; 是一种高层次描述。 else G<= ‘0’; END IF; END PROCESS COMP; End behavioral;
信号赋值语句的语法格式为: 注意符号 目标信号名<=表达式(设定值);
SIGNAL temp : Std_Logic_Vector (7 downto 0);
整体赋值: temp <= “10101010”;
赋值标志 逐位赋值: temp(7) <= „1‟; 逐位赋值 多位赋值: 用单引号 temp (7 downto 4) <= “1010”; 多位赋值 用双引号
signal Enable: Bit; signal CLK, CLEAR: Bit:=‘1’;
例:signal
信号具有全局性的特征
在程序包中定义的信号对于所有调用此程 序包的设计实体都是有效地或称可视的, 可以直接使用。 在实体中定义的信号,对于此实体对应的 所有结构体都是可视的。 在结构体中定义的信号,对于整个结构体 所有子结构都是可视的。
数据流描述:反映数据经过一定的逻辑运算后在输 入和输出间的传递,可以清楚看到数据流出的方向、 路径和结果。描述方式类似于布尔方程,可以描述 组合逻辑电路,也可以描述时序逻辑电路。 LIBRARY IEEE; ENTITY lianxi IS PORT(a,b: IN bit-vector(7 downto 0); g: OUT bit-vector(7 downto 0)); END lianxi ; ARCHITECTURE dataflow OF lianxi IS BEGIN g <= “1” when (a=b) else “0”; END dataflow;
VHDL设计进阶之第四讲
电子教案
第五章 VHDL设计进阶
第五章 VHDL设计进阶之第四讲
第 1 页 © 常州大学信息科学与工程学院
EDA
电子教案
第五章 VHDL设计进阶
§5.4 子程序和子程序重载
§5.4.1 子程序 子程序是用顺序语句完成的,是用来直接调 用以完成重复性的工作。一般放在程序包中, 结构体和进程中也可以。每一次调用都会产 生一个新的硬件模块。
第 7 页 © 常州大学信息科学与工程学院
EDA
电子教案
第五章 VHDL设计进阶
PACKAGE BODY packexp IS FUNCTION max( a,b : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS --定义函数体 BEGIN IF a > b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; --结束FUNCTION语句 END packexp ; --结束PACKAGE BODY语句
第 20 页
© 常州大学信息科学与工程学院
EDA
电子教案
第五章 VHDL设计进阶
一般,参数表中信号有三种模式IN、OUT和INOUT; 如果只定义IN模式而未定义目标参数类型,则默认为 常数量;
如果只定义了INOUT或OUT,则默认目标参数类型是 变量。
BEGIN PROCESS ( a ) BEGIN m(0) <= sam( a(0), a(1), a(2) ) ; m(1) <= sam( a(2), a(0), a(1) ) ; m(2) <= sam( a(1), a(2), a(0) ) ; END PROCESS ; END ARCHITECTURE demo ;
第5章_VHDL设计进阶
KX
康芯科技
语法现象说明
信号定义为标准逻辑位(矢量),必须打开IEEE 库的程序包STD_LOGIC_1164。 Q端口模式是OUT,必须定义信号Q1来完成累加 任务。 Q1 <= Q1 + 1中有不同数据类型间的运算,必须 打开IEEE库的程序包STD_LOGIC_UNSIGNED。 运算符重载。被重载的运算符能对新的数据类型 进行操作;允许被重载的运算符对不同数据类型 进行运算。
ARCHITECTURE behav OF CNT10_2 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = '1' THEN CQI := (OTHERS =>'0') ; ELSIF CLK'EVENT AND CLK='1' THEN IF EN = '1' THEN if m = '0' then IF CQI < 9 THEN CQI := CQI + 1; ELSE CQI := (OTHERS =>'0'); end if; else if cqi > 0 then cqi := cqi-1; else cqi := "1001"; end if; END IF; END IF; END IF; IF ((m = „0') and (CQI = 9)) THEN COUT <= '1'; ELSif ((m = „1') and (CQI = 0)) then cout <= '1'; else COUT <= '0'; END IF; CQ <= CQI; END PROCESS; END behav;
《VHDL程序设计基础》课件
语法格式
library library_name; use library_name.packag e_name.item;
库的使用
在程序中引用库中的函 数、过程、数据类型等 。
示例
library IEEE; use IEEE.STD_LOGIC_116 4.ALL;
程序包(Package)
01 程序包描述
并行赋值语句
同时对多个信号进行赋值操作。
生成语句
用于生成多个相似的电路结构, 如多路选择器、译码器等。
04 VHDL设计方法
自顶向下设计方法
总词
从整体到局部的设计方法
详细描述
自顶向下设计方法是一种从整体到局部的设计方法,首先确定系统的整体结构 和功能,然后逐步细化各个模块的设计,最终完成整个系统的设计。这种方法 有助于提高设计的层次性和模块化,便于设计和调试。
状态机设计
总结词
通过实例演示如何使用VHDL设计状态机。
详细描述
介绍状态机的基本概念和设计方法,包括状态图的绘制、状 态转移的实现等。通过具体的VHDL代码实现一个有限状态机 ,并解释代码中的各个部分。
06 VHDL仿真与验证
仿真工具与流程
仿真工具
ModelSim、Vivado Simulation等常用的 VHDL仿真工具,支持多种仿真算法和精度 。
02 语法格式
03 包的内容
04 包的使用
05 示例
程序包是库的子集,用于 组织相关的函数、过程、 数据类型等。
package package_name is
在包中声明函数、过程、 数据类型等。
在其他程序中引用包中的 内容。
package logic_operators is function AND (A, B: in std_logic) return std_logic; function OR (A, B: in std_logic) return std_logic; end logic_operators;
5第5章 VHDL设计进阶
A<=D1 „0‟ „1‟ 经时间后
两个对象的关系
A<=D1 „1‟ „1‟
A在时序 延时 上的变化
A为‘1‟
2. 进程中赋值的延时特点
进程中,所有的赋值语句(包括信号与变量赋值),均必须在一个延 时内完成。一个进程的运行时间固定为一个延时。
进程中所有的信号赋值语句在进程启动的瞬间顺序启动各自的延时为 的定时器,在定时结束后分别进行赋值操作。
5.1 数据对象
5.1.2 变量
定义变量的一般表述如下: VARIABLE 变量名 : 数据类型 := 初始值 ;
VARIABLE a : INTEGER RANGE 0 TO 15 ;--变量a定义为常数,取值范围是0到15 VARIABLE d : STD_LOGIC := „1‟ ;--变量d定义为标准逻辑位数据类型, 初始值是1
5.1 数据对象
在VHDL中,数据对象有三类,变量(variable)、常量 (constant)和信号(signal)。 数据对象类似于一种容器,用于接受不同数据类型的赋值。 注意:信号的表现比较特殊,具有更多的硬件特征,是VHDL 中最有特色的语言要素之一,在学习中需要进行熟练把握。
5.1 数据对象
只有信号才能把进程外的信息带入进程内部,或将进程内部的信息带出进 程。(信息的内部和外部沟通差异)
5.1.3 信号
信号的定义还可以设置延时量,如下
SIGNAL a,b,c,y,z: INTEGER ; ... PROCESS (a,b,c) BEGIN y <= a + b ; z <= c – a ; y <= b ; END PROCESS ;
对于端口,区别只是输出端口不能读入数据,输入端口不能被赋值;
第5章 VHDL设计进阶
目标信号名 《= 表达式 after 时间量 ;
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
一般地,从硬件电路系统来看,变量和信号相当于 逻辑电路系统中的连线和连线上的信号值;常量相当于电 路中的恒定电平,如GND或VCC接口。
接上页
5.2 VHDL设计实例及其语法内涵
5.2.2 移位模式可控的8位移位寄存器设计
5.2.3 位矢中‘1’码个数统计电路设计
5.2 VHDL设计实例及其语法内涵
5.2.3 位矢中‘1’码个数统计电路设计
5.2 VHDL设计实例及其语法内涵
5.2.3 位矢中‘1’码个数统计电路设计
LOOP语句的常用表达方式有两种: (1)单个LOOP语句
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
在不完整的条件语句中,单独的变量赋值语句与信号 赋值语句都能综合出相同的时序电路,此时变量己不是简单 的数据临时储存结构了。
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
例5-1与例5-2综合的结果完全一样,都 是图5-1所示的D触发器。
EDA技术实用教程
第5章
5.GH_VHDL设计进阶
END CASE ;
Case语句是顺序语句,因此必须放在进程语 句当中使用。 当执行到CASE语句时,首先计算<表达式>的 值,然后根据when条件句中与之相同的<选 择值>,执行对应的<顺序语句>,最后结束 case语句。条件句中的=>不是操作符,它的 含义相当于then(于是)。
变量赋值目标 := 赋值源 信号赋值目标 <= 赋值源
赋值目标可以是单个变量或信号名,或是数组中的单个元 素,或数组中的一段,也可以是一个集合。 信号赋值语句只有出现在Process或者Subprogram中才 是顺序语句,在其他场合下均是并行语句。
信号与变量赋值语句
【例1】(用变量的方式实现典型D触发器) LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE QQ : STD_LOGIC ; BEGIN IF CLK'EVENT AND CLK = '1' QQ := D1 ; END IF; Q1 <= QQ; END PROCESS ; END ;
Case语句使用时应该注意几点:
When条件句中的选择值或者标识符所代表的值必须在表 达式的取值范围内。
除非所有的条件句中的选择值能完全覆盖case语句中的 表达式的取值,否则,最后一个条件句必须是:when others=><顺序语句>,以免插入不必要的寄存器。 Case语句中的选择值只能出现一次。 Case语句执行中必须选中,且只能选中所列条件句中的 一条件。
第五章VHDL设计进阶
第结1果0 页:x<=c xor b, y<=c xor b x<=c xor a, y<=c xor b
第五章 VHDL设计进阶
信号VS变量
从表面上看…
(1)信号可以是多个进程的全局信号,定义范围是 实体、结构体和程序包,进程和子程序不允许定义 信号;而变量只在进程或子程序中使用,即在定义 它们的顺序域可见。
生在该属性所附着的信号上(即信号有变化), 则其取值为Ture,否则为False。 利用此属性可决定时钟信号的变化情况,即时钟是 否发生。
则这两个信号的属性值分别为: A’left=7; A’right=0; A’low=0; A’high=7; A’length=8; B’left=0; B’right=3; B’low=0; B’high=3; B’length=4;
第 26 页
第五章 VHDL设计进阶
(2)‘event属性: ‘event属性,它的值为布尔型,如果刚好有事件发
第 14 页
3、VHDL数据类型
第五章 VHDL设计进阶
(1)VHDL的逻辑数据类型:
布尔代数(Boolean)型 ;
位(Bit);
在std库的standard 程序包中进行定义。
位数组类型(Bit_Vector)
type BOOLEAN is (FALSE, TRUE) ; type BIT is (‘0’, ‘1’); type BIT_VECTOR is array (NATURAL range <>) of BIT;
c: out std_logic);
end data;
architecture m1 of data is
begin
第5章VHDL设计进阶
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
5.2.3 位矢中‘1’码个数统计电路设计
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
第5章VHDL设计进阶
5.2.5 双向端口的设计方法
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
第5章VHDL设计进阶
5.2.6 三态总 线电路设计
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
第5章VHDL设计进阶
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
5.2.1 含同步 并行预置功能 的8位移位寄 存器设计
第5章VHDL设计进阶
5.2 VHDL设计实例及其语法内涵
5.2.1 含同步并行预置功能的8位移位寄存器设计
5.8.3 结构描述
结构描述建模步骤如下: • 元件说明:描述局部接口。 • 元件例化:相对于其他元件放置元件。 • 元件配置:指定元件所用的设计实体。
第5章VHDL设计进阶
习题
5-1 什么是固有延时?什么是惯性延时?
5-2 是什么?在VHDL中,有什么用处?
5-3 哪些情况下需要用到程序包STD_LOGIC_UNSIGNED?试举一例。
图示VHDL从顶到下设计
1、新建一个项目(project),按照情况选择器件、名称等,其他默认。
2、新建了一个ttt项目
3、新建一个文件(菜单file下new)
4、选择block框图类型,点击ok新建文件
5、默认block1.bdf,然后保存文件。
保存后利用图上的block tool工具新建一个框图
6、在框图上点击右键,选择block properties选项
7、在弹出的窗口中设置框图的特性,如引脚方向、名称等
8、框图中的设置内容已经显示
9、指着框图点击右键,选择这个蓝色的选项,生成vhd文件
10、选择要生成的文件格式,我选择的是VHDL,点击ok
11、已经生成文件了,保存一下。
12、可选择保存目录,要和project在同一目录下的。
13、编写完程序后,点击file下的这个蓝色菜单,重新生成具有内容的框图
14、编译成功
15、回到顶层视窗,指着框图点击右键,选择更行框图(蓝色的)
16、软件会提示需要更新的框图,选择需要更新的框图,点击ok
完成。
VHDL电路优化设计及方法
总第158期2007年第2期 舰船电子工程Shi p Electr onic EngineeringVol.27No.2 112 VHDL电路优化设计及方法3杨鲜艳 王珊珊 李 萍(空军工程大学导弹学院 三原 713800)摘 要 随着集成电路技术和E DA技术的不断发展,VHDL已经成为I EEE标准化的硬件描述语言。
分析VHDL语言设计的优点并对设计中的简化电路结构、优化电路设计等问题进行了研究,从设计思想、语句运用以及描述方法等多方面对电路进行优化设计。
通过电路优化设计,可以使用规模更小的可编程逻辑芯片,从而降低系统成本。
关键词 VHDL;电路设计;优化中图分类号 T M930.111 前言VHDL(Very H igh Speed I ntegrated Circuit Hardware Descri p ti on Language)是随着可编程逻辑器件(P LD)的发展而发展起来的一种硬件描述语言。
它是一种面向设计、多层次、多领域且得到一致认同的标准硬件描述语言,是集行为描述、RT L 方式描述、门级描述功能为一体的语言。
利用VHDL语言进行P LD设计开发,虽然在使用软件方面可以找到最佳的组合,但在设计思路和语言使用方面对系统的综合质量也有重要的影响。
VHDL的设计是行为级的设计,它必然存在电路设计师的设计思路与电路结构相脱节的问题。
电路设计师主要是根据VHDL的语法规则对系统目标的逻辑行为进行描述,然后通过综合工具进行电路结构的综合、编译、优化;通过仿真工具进行逻辑功能仿真。
而在实际过程中,由于每个电路工程师对语言规则、电路行为的理解不同,直接导致其编程风格的不同,甚至复杂程度相差甚远。
同样的系统功能,如果描述的方式不一样,其综合出来的电路结构就可能大相径庭。
即使最后综合出来的电路都能实现相同的逻辑功能,其电路的复杂程度和实验特性都会有很大的差别。
因此,本文对设计中的简化电路结构、优化电路设计等问题进行了研究,提出通过资源共享、逻辑优化、采用集成度高的电路语言、避免使用带有寄存器的语句和提高硬件综合效率等方法对VHDL电路进行优化设计,从而降低系统成本。
VHDL第五章.ppt
Altera Quartus II 5.1
常用FPGA集成开发环境
Quartus II
Max+PlusII
ISE
ispLEVEL
基本设计流程
1择编辑文件的语言类型
2.创建工程
图 利用New Project Wizard 创建工程
图 vwf激励波形文件存盘
图 向波形编辑器拖入信号节点
图 设置时钟周期
图 选择总线数据格式
图 设置好的激励波形图
图 选择仿真控制
图 仿真波形输出
图 选择全时域显示
6.应用RTL电路图观察器
图 RTL电路图
引脚设置和下载
1.引脚锁定
图 GW48实验系统 模式5实验电路图
图 Assignment Editor 编辑器
图 SignalTapII数据窗设置后的信号波形
原理图输入设计方法
1. 为本项工程设计建立文件夹 2. 输入设计项目和存盘 3. 将设计项目设置成可调用的元件 4. 设计全加器顶层文件 5. 将设计项目设置成工程和时序仿真
原理图编辑输入流程
(1) 打开QuartusII,选 菜单“File”→“New”, 在弹出的“New”对话 框中选择“Device Design Files”页的原理 图文件编辑输入项 “Block Diagram/Schematic File” ,按“OK”后将打 开原理图编辑窗。
图 SignalTapII编辑窗口
2.调入代测信号
3. SignalTapII参数设置
图 SignalTapII编辑窗口
4.文件存盘
图 设定SignalTapII与工程同一综合适配
5. 编译下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.6 半整数与奇数分频电路设计
5.6 半整数与奇数分频电路设计
接下页
5.6 半整数与奇数分频电路设计
接上页
5.6 半整数与奇数分频电路设计
5.7 仿 真 延 时
5.7.1 固有延时
5.7 仿 真 延 时
5.7.2 传输延时
5.7.3 仿真
5.8 VHDL的RTL表述
5.8.1 行为描述
5.2.3 位矢中‘1’码个数统计电路设计
5.2 VHDL设计实例及其语法内涵
5.2.3 位矢中‘1’码个数统计电路设计
5.2 VHDL设计实例及其语法内涵
5.2.3 位矢中‘1’码个数统计电路设计
LOOP语句的常用表达方式有两种: (1)单个LOOP语句
(2)FOR_LOOP语句
5.2 VHDL设计实例及其语法内涵
5.2.3 位矢中‘1’码个数统计电路设计
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
5.2 VHDL设计实例及其语法内涵
5.2.4 三态门设计
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.2 VHDL设计实例及其语法内涵
题
5-3 哪些情况下需要用到程序包STD_LOGIC_UNSIGNED?试举一例。 5-4 说明信号和变量的功能特点,以及应用上的异同点。 5-5 什么是重载函数?重载算符有何用处?如何调用重载算符函数?
5-6 在VHDL设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如 何实现?
5-7 用循环语句设计一个7人投票表决器,及一个4位4输入最大数值检测电路。
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
5.2 VHDL设计实例及其语法内涵
5.2.1 含同步 并行预置功能 的 8位 移 位 寄 存器设计
r7
1 1 1 1
6
0 1 1 1
5
0 0 1 1
4
1 0 0 1
3
1 1 0 0
2
1 1 1 0
1
1 1 1 1
0
0 1 1 1 1 0
实验与设计
5-4 基于时序电路的移位相加型8位硬件乘法器设计
(1)实验原理: (2)实验任务1: (3)实验任务2: (4)实验任务4: 演示示例:/KX_7C5EE+/EXPERIMENTs/EXP32_MULTI8X8/MLTL8X8。
实验与设计
5-4 基于时序电路的移位相加型8位硬件乘法器设计
顺序描述语句
信号赋值语句 变量赋值语句 进程启动语句 子程序调用语句 顺序描述语句 进程跳出语句
敏感信号参数表
多数VHDL综合器要求敏感信号表必须列出本 进程中所有输入信号名
5.3 顺序语句归纳
5.3.3 进程要点
1. PROCESS为一无限循环语句 2. 进程中的顺序语句具有明显的顺序和并行双重性
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
D1 A
1 1
0 0
1 1
D1 A
1 1
0 0
1 1
B
Q1
0
0
1
0
0
1
B
Q1
1
1
0
0
1
1
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
(1)实验原理: (2)实验任务1: (3)实验任务2: (4)实验任务4: 演示示例:/KX_7C5EE+/EXPERIMENTs/EXP32_MULTI8X8/MLTL8X8。
实验与设计
5-4 基于时序电路的移位相加型8位硬件乘法器设计
(1)实验原理: (2)实验任务1: (3)实验任务2: (4)实验任务4: 演示示例:/KX_7C5EE+/EXPERIMENTs/EXP32_MULTI8X8/MLTL8X8。
5.2.5 双向端口的设计方法
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.2 VHDL设计实例及其语法内涵
5.2.5 双向端口的设计方法
5.2.6 三态总 线电路设计
5.2 VHDL设计实例及其语法内涵
实验与设计
5-5 移位寄存器设计
演示示例:/KX_7C5EE+/EXPERIMENTs/EXP39_SHIFTER/ 。
5-6 串/并转换数码静态显示控制电路设计
(1)实验原理: (2)实验任务1:(3)实验任务2:
实验与设计
5-7 并/串转换扩展输入口电路设计
实验任务:仅使用FPGA的2到3个I/O口,通过数个74LS165或4021扩展输入 口。 此类电路在单片机开发中也常用,但是由于单片机本身的速度不高,再加上 并/串转换,每一个通过转换后的输入口的实际速度已经非常低,适用范围较 小。如无法用于读取较高速度ADC的数据等。如果用FPGA来控制,则仍能获 得较高速度,从而提高了此类扩展电路的实用价值。 通常,74LS165的速度约25MHz左右,如果只扩展一片,对于FPGA的控制 电路,可用足其上限频率,每一个位的速度可以达到3MHz。
5.2.6 三态总线电路设计
5.2 VHDL设计实例及其语法内涵
5.2.6 三态总线电路设计
5.2 VHDL设计实例及其语法内涵
5.2.7 双边沿触发时序电路设计讨论
5.3 顺序语句归纳
5.3.1 进程语句格式
5.3 顺序语句归纳
5.3.2 进程结构组成
进程说明部分
定义一些局部量,可包括数据 类型、常数、变量、属性、子 程序等
5.2 VHDL设计实例及其语法内涵
5.2.1 含同步并行预置功能的8位移位寄存器设计
5.2 VHDL设计实例及其语法内涵
5.2.2 移位模式可控的8位移位寄存器设计
接下页
5.2 VHDL设计实例及其语法内涵
接上页
5.2 VHDL设计实例及其语法内涵
5.2.2 移位模式可控的8位移位寄存器设计
实验与设计
5-1 半整数与奇数分频器设计
(1)实验目的: (2)实验内容1: (3)实验内容2: (4)实验内容3:
(5)实验内容4 :
实验与设计
5-2 简易分频器设计
(1)实验目的: (2)实验内容1: (3)实验内容2: (4)实验内容3: 5E+系统演示示例:/KX_7C5EE+/EXPERIMENTs/EXP30_FDIV。
5-8 从不完整的条件语句产生时序模块的原理看,例5-7和例5-10从表面上看都包含 不完整条件语句,试说明,为什么它们的综合结果都是组合电路。
5-9 设计一个求补码的程序,输入数据是一个有符号的8位二进制数。
习
题
5-10 设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0。 5-11 用原理图或VHDL输入方式分别设计一个周期性产生二进制序列01001011001 的序列发生器,用移位寄存器或用同步时序电路实现,并用时序仿真器验证其功能。 5-12 基于原理图输入方式,用74194、74273、D触发器等器件组成8位串入并出的 转换电路,要求在转换过程中数据不变,只有当8位一组数据全部转换结束后,输 出才变化一次。 5-13 设计8位左移移位寄存器,给出时序仿真波形。 5-14 将例5-15中的四个IF语句分别用四个并列进程语句表达出来。
实验与设计
5-3 VGA彩条信号显示控制电路设计
(1)实验目的: (2)实验原理:
实验与设计
实验与设计
实验与设计
接下页
接上页
实验与设计
接下页
接上页
实验与设计
接下页
接上页
实验与设计
接Hale Waihona Puke 页实验与设计接上页
实验与设计
(3) 实验内容1:演示示例: /KX_7C5EE+/EXPERIMENTs/EXP11_VGA_COLOR_SQUR/,和 /EXP11_VGA_COLOR_LINE/。 (4) 实验内容2: (5) 实验内容3: (6) 实验内容4:
EDA技术实用教程
第5章
VHDL设计进阶
5.1 数 据 对 象
5.1.1 常数
使程序更容易阅读和修改
5.1 数 据 对 象
5.1.2 变量
主要作用:在进程中作为临时数据存储单元,立即赋值,不存在延时行为。
5.1 数 据 对 象
5.1.3 信号
作用:作为模块间的信息交流通道,可以容纳当前值,也可以保留历史值
5.8 VHDL的RTL表述
5.8.1 行为描述
5.8 VHDL的RTL表述
5.8.2 数据流描述
5.8.3 结构描述
结构描述建模步骤如下: 元件说明:描述局部接口。 元件例化:相对于其他元件放置元件。 元件配置:指定元件所用的设计实体。
习
5-1 什么是固有延时?什么是惯性延时? 5-2 是什么?在VHDL中,有什么用处?
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
5.1 数 据 对 象
5.1.4 进程中的信号赋值与变量赋值
5.1 数 据 对 象