《VHDL语言第一讲.ppt》由会员分享,可在线阅读,更多相关《VHDL语言第一讲.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 数字电子技术实验教程数字电子技术实验教程第第 一讲一讲VHDL设计初步设计初步江苏科技大学江苏科技大学应电中心应电中心1.1 多路选择器的多路选择器的VHDL描述描述 1.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 图图1-1 mux21a实体实体 1.1 多路选择器的多路选择器的VHDL描述描述 1.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 图图1-2 mux21a结构体结构体 1.1 多路选择器的多路选择器的VHDL描述描述 1.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例例1-1】ENTITY mux21a IS PORT(a,b:IN B
2、IT;s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b ;END ARCHITECTURE one;1.1 多路选择器的多路选择器的VHDL描述描述 1.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例例1-2】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e:BIT;-
3、相当相当电电路内部路内部导线导线 BEGINd=a AND(NOT S);e=b AND s;y=d OR e ;END ARCHITECTURE one;1.1 多路选择器的多路选择器的VHDL描述描述 1.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例例1-3】ENTITY mux21a IS PORT(a,b,s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGIN PROCESS(a,b,s)BEGIN IF s=0 THEN y=a;ELSE y=b;END IF;END PROC
4、ESS;END ARCHITECTURE one;敏感信号进程语句完整IF语句1.1 多路选择器的多路选择器的VHDL描述描述 1.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 图图1-3 mux21a功能时序波形功能时序波形 1.1 多路选择器的多路选择器的VHDL描述描述 1.1.2 相关语句结构和语法说明相关语句结构和语法说明【例例1-4】ENTITY e_name IS PORT(p_name :port_m data_type;.p_namei:port_mi data_type);END ENTITY e_name;1.1.实体表达实体表达 2.2.实体名实体名 3.3
5、.端口语句和端口信号名端口语句和端口信号名 1.1 多路选择器的多路选择器的VHDL描述描述 1.1.2 相关语句结构和语法说明相关语句结构和语法说明 4.4.端口模式端口模式 IN IN 输入端口,定义的通道为单向只读模式输入端口,定义的通道为单向只读模式 OUT OUT 输出端口,定义的通道为单向输出模式输出端口,定义的通道为单向输出模式 INOUT INOUT 定义的通道确定为输入输出双向端口定义的通道确定为输入输出双向端口 BUFFER BUFFER 缓冲端口,其功能与缓冲端口,其功能与INOUTINOUT类似类似 1.1 多路选择器的多路选择器的VHDL描述描述 1.1.2 相关语句
6、结构和语法说明相关语句结构和语法说明 5.5.数据类型数据类型 BIT(BIT(0 0OR OR 1 1)6.6.结构体表达结构体表达 【例例1-5】ARCHITECTURE arch_name OF e_name IS 说明语句说明语句BEGIN (功能描述语句功能描述语句)END ARCHITECTURE arch_name;1.1 多路选择器的多路选择器的VHDL描述描述 1.1.2 相关语句结构和语法说明相关语句结构和语法说明 7.7.赋值符号和数据比较符号赋值符号和数据比较符号 赋值符赋值符 “=”表式中的等号表式中的等号“=”没有赋值的含义,只是一种数据比较符号。没有赋值的含义,只
7、是一种数据比较符号。IF a THEN.-注意,注意,a的数据类型必须是的数据类型必须是boolean IF(s1=0)AND(s2=1)OR(cb+1)THEN.1.1 多路选择器的多路选择器的VHDL描述描述 1.1.2 相关语句结构和语法说明相关语句结构和语法说明8.8.逻辑操作符逻辑操作符 AND、OR、NOT 9.9.条件语句条件语句IF 表达式表达式 THEN 表达式表达式;ELSE 表达式表达式;END IF;IF语句必须以语句语句必须以语句 “END IF;”结束结束 1.1 多路选择器的多路选择器的VHDL描述描述 1.1.2 相关语句结构和语法说明相关语句结构和语法说明 1
8、0.WHEN_ELSE10.WHEN_ELSE条件信号赋值语句条件信号赋值语句赋值目标赋值目标=表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE .表达式表达式 ;EXAMPLE:EXAMPLE:z =a WHEN p1=1 ELSE b WHEN p2=1 ELSE c ;图图1-4 半加器半加器h_adder电路图及其真值表电路图及其真值表 1.2.1 半加器描述半加器描述 1.2 1位二进制全加器的位二进制全加器的VHDL描述描述 图图1-5 全加器全加器f_adder电路图及其实体模块电路图及其实体模块 1.2.1 半加器描述半加器
9、描述 1.2 1位二进制全加器的位二进制全加器的VHDL描述描述 1.2.1 半加器描述半加器描述 1.2 1位二进制全加器的位二进制全加器的VHDL描述描述【例例1-8】LIBRARY IEEE;-半加器描述半加器描述(1):布尔方程描述方法布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder is BEGIN so=NOT(a XOR(NOT b);co=a
10、AND b;END ARCHITECTURE fh1;K KX康芯科技康芯科技【例例1-9】LIBRARY IEEE;-半加器描述半加器描述(2):真值表描述方法:真值表描述方法USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder is SIGNAL abc:STD_LOGIC_VECTOR(1 DOWNTO 0);-标准逻辑位矢量标准逻辑位矢量 BEGIN abc so=0;c
11、o so=1;co so=1;co so=0;co NULL;-不可省略不可省略 空操作空操作语语句句 END CASE;END PROCESS;END ARCHITECTURE fh1;1.2.1 半加器描述半加器描述 1.2 1位二进制全加器的位二进制全加器的VHDL描述描述【例例1-10】或门逻辑描述或门逻辑描述 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a IS PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a IS
12、BEGIN c ain,b=bin,co=d,so=e);-例化语句例化语句 u2:h_adder PORT MAP(a=e,b=cin,co=f,so=sum);u3:or2a PORT MAP(a=d,b=f,c=cout);END ARCHITECTURE fd1;VHDL描述的语言现象说明描述的语言现象说明 n 1.1.设计库和标准程序包设计库和标准程序包 nLIBRARY WORK;nLIBRARYLIBRARY STD;nUSE STD.STANDARD.ALL;n使用库和程序包的一般定义表式是:使用库和程序包的一般定义表式是:n nLIBRARY LIBRARY ;n nUSE
13、USE .ALL;.ALL;n VHDL描述的语言现象说明描述的语言现象说明n2.数据类型数据类型nBIT数据类型定义:数据类型定义:n TYPE BIT IS(0,1);-只有两种取值只有两种取值 nSTD_LOGIC数据类型定义:数据类型定义:n TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);VHDL描述的语言现象说明描述的语言现象说明标准逻辑矢量数据类型标准逻辑矢量数据类型 STD_LOGICSTD_LOGIC_VECTOR在使用在使用STD_LOGIC_VECTOR中,中,必须注明其数组宽度必须注明其数组宽度,即位宽,如:,即位宽,如:B:OUT STD_L
14、OGIC_VECTOR(7 DOWNTO 0);或或 SIGNAL A:STD_LOGIC_VECTOR(1 TO 4)B=01100010;-B(7)为为 0 B(4 DOWNTO 1)=1101;-B(4)为为 1 B(7 DOWNTO 4)=A;-B(6)等于等于 A(2)3 CASE语句语句 VHDL描述的语言现象说明描述的语言现象说明1.1.CASECASE语句语句 CASE ISWhen =;.;;When =;.;;.WHEN OTHERS=;END CASE;江苏科技大学江苏科技大学VHDL描述的语言现象说明描述的语言现象说明4.4.并置操作符并置操作符 SIGNAL a:ST
15、D_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a 连接端口名连接端口名,.);VHDL描述的语言现象说明描述的语言现象说明相关语句结构和语法说明相关语句结构和语法说明 进程语句和顺序语句进程语句和顺序语句 在在一一个个结结构构体体中中可可以以包包含含任任意意个个进进程程语语句句结结构构,所所有有的的进进程程语语句句都都是是并并行行语语句句,而而由由任任一一进进程程PROCESS引引导导的的语语句句(包包含含在在其其中的语句)结构属于顺序语句。中的语句)结构属于顺序语句。应用VHDL设计组合电路实例 BCD转换
16、七段码(共阴极数码管1-亮)输输 入入 输输 出出C3C2C1C0abcdefg000011111100001011000000101101101001101100110100101101101010110011110001001BCD转换七段码(共阴极数码管1-亮)(Case语句)LIBRARY IEEE;-真值表描述方法真值表描述方法USE IEEE.STD_LOGIC_1164.ALL;ENTITY segc_1 IS PORT(c:IN STD_LOGIC_vector(3 downto 0);s:OUT STD_LOGIC_vector(6 downto 0);END ENTITY
17、segc_1;ARCHITECTURE one OF segc_1;BEGIN PROCESS(c)BEGIN CASE c IS -类似于真值表的类似于真值表的CASE语句语句 WHEN“0000”=s s s s NULL;END CASE;END PROCESS;END ARCHITECTURE one;LIBRARY ieee;-真值表描述方法真值表描述方法USE ieee.std_logic_1164.ALL;ENTITY seg7dec ISPORT(bcdin:IN std_logic_vector(3 DOWNTO 0);segout:OUT std_logic_vector(
18、6 DOWNTO 0);END seg7dec;ARCHITECTURE ver3 OF seg7dec ISBEGINWITH bcdin SELECT segout=1000000 WHEN X0,1100111 WHEN X1,1101101 WHEN X2,0000000 WHEN X8,0000001 WHEN X9,“1111111 WHEN OTHERS;END ver3;BCD转换7段码(共阳极数码管0-亮)(Select语句)LIBRARY ieee;-真值表描述方法真值表描述方法USE ieee.std_logic_1164.ALL;ENTITY seg7dec ISPOR
19、T(bcdin:IN std_logic_vector(3 DOWNTO 0);segout:OUT std_logic_vector(6 DOWNTO 0);END seg7dec;ARCHITECTURE ver3 OF seg7dec ISBEGIN segout=1000000 WHEN bcdin=X0“ELSE 1100111 WHEN bcdin=X1“ELSE 1101101 WHEN bcdin=X2“ELSE 0000000 WHEN bcdin=X8“ELSE 0000001 WHEN bcdin=X9“ELSE “zzzzzzz ;END ver3;BCD转换7段码(共
20、阳极数码管0-亮)(When语句)BCD转换7段码(共阳极数码管0-亮)(IF语句)LIBRARY ieee;-真值表描述方法真值表描述方法USE ieee.std_logic_1164.ALL;ENTITY seg7dec ISPORT(bcdin:IN std_logic_vector(3 DOWNTO 0);segout:OUT std_logic_vector(6 DOWNTO 0);END seg7dec;ARCHITECTURE ver3 OF seg7dec ISBEGIN PROCESS(bcdin)BEGINIF(bcdin=“0000”)THEN segout=“1000000”;ELSIF(bcdin=“0001”)THEN segout=“1100111”;ELSIF(bcdin=“0010”)THEN segout=“1101101”;.ELSE NULL;-注意,这里使用了空操作语句注意,这里使用了空操作语句END IF;END PROCESS;END ver3;做人要知足,做事要知不足,做学问要不知足!关于VHDL你知道多少?