《(12-13)1位二进制全加器的VHDL设计》由会员分享,可在线阅读,更多相关《(12-13)1位二进制全加器的VHDL设计(55页珍藏版)》请在金锄头文库上搜索。
1、1位二进制全加器的VHDL设计2012-3-12本节知识要点:1、CASE语句 v表示多分支情况的选择语句,各分支无优先级。 v与IF语句的区别。 2、元件例化语句(有2个语句组成) v用于层次设计,即在当前设计中调用一个已经设计好 的功能模块 vcomponent 语句:将一个设计实体定义为一个元 件 vport map 语句: 用于元件调用(端口映射)。3、标准逻辑矢量:std_logic_vector( * downto *) 或者 std_logic_vector( * to *) 表示一维数组或者总线 v并置操作符 . ; ; When = ; . ; ; . END CASE ;作
2、用:表示多分支情况的选择语句,各分支无优先级。 执行:每次启动CASE语句,只选择执行其中一个分支的语句。注意:(1)对所有的情况都要赋值,否则会综合成锁存器。(2)CASE语句只能在process语句中使用。(3)与IF语句的区别。2. 标准逻辑矢量数据类型STD_LOGIC_VECTOR在使用STD_LOGIC_VECTOR中,必须注明其数组 宽度,即位宽,如: B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) 8位数 或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4) 4位数以下是一些并置操作示例:SIGNAL a : STD_LOGIC_V
3、ECTOR (3 DOWNTO 0) ; SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;. a so so so so NULL ;END CASE;END PROCESS; END ARCHITECTURE fh1 ;【例】 . -半加器描述(3)SIGNAL abc,cso : STD_LOGIC_VECTOR(1 DOWNTO 0 );BEGINabc cso cso cso csoain,b=bin,co=d, so=e); u2 : h_adder PORT MAP(a=e, b=cin, co=f, so=sum); u3 : or2a POR
4、T MAP(a=d, b=f, c=cout);END ARCHITECTURE fd1;全加器描述和例化语句元件例化语句由两部分组成,第一部分是将一个现成的 设计实体定义为一个元件,语句的功能是对待调用的元件 作出调用声明,它的最简表达式如下所示:COMPONENT 元件名 IS PORT (端口名表) ;END COMPONENT 文件名 ;元件例化语句的第二部分则是此元件引脚与当前设计实体 (顶层文件)中的具体信号连接起来。语句的表达式如下:例化名 : 元件名 PORT MAP( 端口名 = 连接端口名,.);注意连接顺序:左边表示元件引脚名,右边表示与该引脚 相连的实际信号名。课外练习
5、: v采用调用方法设计8位全加器 。提示:调用8次,将8个1位全加器串连起来。v 知识要点 计数器:广泛用于控制。 整数:INTEGER, 要定义范围,便于综合器确定线 宽。 表示方法:如2,35,16d9#, 2#11001#等。 自然数和正整数。 操作符的重载函数 重载:给操作符赋予新的功能,使不同数据类型 的数据可以混合使用 使用重载函数: USE IEEE.STD_LOGIC_UNSIGNED.ALL 4 计数器设计vBUFFER模式 当输出的量内部需要用时,必须定义为BUFFER类型。 v计数器的电路结构 一个加法器 一个锁存器 Q X)v十进制计数器的设计 使能型号和复位信号 内部
6、变量的定义 进位信号 v移位寄存器的设计 并行置位 移位寄存器的描述 移位输出4 计数器设计 【例】 ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q: BUFFER INTEGER RANGE 15 DOWNTO 0); END ; ARCHITECTURE bhv OF CNT4 ISBEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q 0) ;-计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿IF EN = 1 THEN -检测是否允许计数IF CQI 0);-
7、等于或者大于9,计 数值清零 END IF;END IF;END IF; IF CQI = “1001” THEN COUT X)为了简化表达才使用短语“(OTHERS=X)”,这是一个省略赋值 操作符,它可以在较多位的位矢量赋值中作省略化的赋值,如以 下语句:SIGNAL d1,d2 : STD_LOGIC_VECTOR(4 DOWNTO 0);VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0);. d1 0);d2 1,4=1,others=0); a1 := (OTHERS=0) ; 则d1 = “00000”, d2 = “10010” a1=“00
8、0000000000000”省略赋值操作符(OTHERS=X)比并置操作符 USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHFRT IS - 8位右移寄存器PORT ( CLK,LOAD : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);QB : OUT STD_LOGIC ); END SHFRT;【例】 。 ARCHITECTURE behav OF SHFRT ISBEGINPROCESS (CLK, LOAD)VARIABLE REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0);B
9、EGINIF CLKEVENT AND CLK = 1 THENIF LOAD = 1 THEN REG8 := DIN; -由(LOAD=1)装载 新数据ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1); END IF;END IF;QB = REG8(0); - 输出最低位END PROCESS; END behav; 含并行置位的移位寄存器设计 工作时序 (1)在第一个时钟到来时,LOAD恰为高电平(2)第二个时钟,以及以后的时钟信号都是移位时钟(3)第二个时钟后,QB输出了右移出的第2个位 14.6 VHDL语句结构与语法小节 实体:以ENTITY.
10、. .END ENTITY e_name描述器件的端 口特性。 结构体: 以ARCHITECTURE . END ARCHITECTURE 给出器件 的逻辑功能和行为。 端口定义: 以PORT()语句定义器件端口及其数据类型。 端口模式: IN、OUT、INOUT、BUFFER描述端口数据的 流向特征。 数据类型: 数据对象承载数据的类别:INTEGER、 BOOLEAN、STD_LOGIC、BIT、STD_LOGIC_VECTOR。 信号赋值符:“=”,用于信号数据的传输,仿真传输延时 最短为一个。 条件比较符: “=”,在条件语句表式中用于比较待测数据 的关系。 延时: 模拟器最小分辨时间
11、,或称延时 。逻辑操作符: AND、OR、NOT、NAND、XOR、 XNOR。 IF条件语句:IF_THEN_ELSE语句作为顺序语句。 并行条件语句:WHEN_ELSE条件信号赋值语句。 进程语句: 以PROCESS .END PROCESS引导 的语句结构。 顺序语句: 由进程语句引导的,以顺序方式执行 的语句。 并行语句: 在结构体中以并行方式执行的语句。 文件取名: 建议文件名与VHDL设计的实体名一致 ,后缀是.vhd。4.6 VHDL语句结构与语法小节 文件存盘: VHDL设计文件必须存于指定为工程的目录中, 此目录将被设定为WORK库,WORK库的路径即为此目录的路径 。 VH
12、DL库:LIBRARY语句打开VHDL库:IEEE库、标准库STD 、工作库WORK . . 程序包:USE语句声明使用程序包:STD_LOGIC_1164、 STD_LOGIC_UNSIGNED、STANDARD等程序。 数据对象:信号:SIGNAL,变量:VERIABLE,常数: CONSTANT 信号属性函数:信号属性函数EVENT、LAST_VALUE。 时钟检测:时钟检测上升沿检测表式:CLKEVENT AND CLK=1、RISING_EDGE()、FALLING_EDGE()等。时序电路:不完整条件语句产生时序电路:IF THEN END IF,IF THEN ELSIF THE
13、N END IF 真值表表达:表达方法之一是用CASE_WHEN语句,但要注意OTHERS 的应用。 并置操作符:并置操作符可用于合并两个或多个逻辑矢量,构建成新的 数组。 元件例化:由元件调用声明语句COMPONENT和映射语句PORT MAP( ) 构成。 运算符重载概念:当进行非整数类型数据运算操作时需要调用运算符重载 函数,这可以打开程序包STD_LOGIC_UNSIGNED。 习 题 1. 画出与下例实体描述对应的原理图符号元件:ENTITY buf3s IS - 实体1: 三态缓冲器PORT (input : IN STD_LOGIC ; - 输入端enable : IN STD_
14、LOGIC ; - 使能端output : OUT STD_LOGIC ) ; - 输出端END buf3x ;ENTITY mux21 IS -实体2: 2选1多路选择器PORT (in0, in1, sel : IN STD_LOGIC; output : OUT STD_LOGIC); 习 题 2. 图3-17所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的 表达方式写出此电路的VHDL程序。选择控制的信号s1和s0的数据类型为 STD_LOGIC_VECTOR;当s1=0,s0=0;s1=0,s0=1;s1=1, s0=0和s1=1,s0=1分别执行y=a、y=b、
15、y=c、y=d。 4选1多路选择器 习 题 3. 图所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当 s=0和1时,分别有y=a和y=b。试在一个结构体中用两个进程来表 达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。 双2选1多路选择器 习 题 4. 图是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设 计文件。 时序电路图 习 题 5. 给出1位全减器的VHDL描述。要求:(1) 首先设计1位半减器,然后用例化语句将它们连接起来,图3-20中 h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。(2) 以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语 句来完成此项设计(减法运算是 x y - sun_in = diffr)。 1位全减器 习 题 6. 根据图,写出顶层文件MX3256.VHD的VHDL设计文件。