《【教学课件】第3章VHDL基础.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章VHDL基础.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 VHDLVHDL基础基础 在在VHDLVHDL中,数据对象有中,数据对象有3 3类:常量(类:常量(constant constant)、变量()、变量(variablevariable)、)、信号(信号(signalsignal)3.6.1 3.6.1 常量常量 常量的定义和设置主要是为了使程序更容易阅读和修改。常量的定义和设置主要是为了使程序更容易阅读和修改。定义的一般表述方法:定义的一般表述方法:Constant Constant 常量名:数据类型:常量名:数据类型:=表达式表达式例:例:constant constant X X:std_logic_vector:=“0
2、10110”:std_logic_vector:=“010110”定义常数定义常数X X的数据类型是的数据类型是std_logic_vectorstd_logic_vector,它等于,它等于“010110”“010110”constant constant Y Y:integer:=15:integer:=15定义常数定义常数Y Y的数据类型是的数据类型是integerinteger,它等于,它等于15153.6 3.6 数据对象数据对象 P67P67常数使用范围说明:常数使用范围说明:P131P131 常数的使用范围取决于它被定义的位置。库包集合实体构造体进程1、当常数CS是在包集合里被定
3、义的,那它可以在调用此包集 合的所有程序中使用。2、当常数CS是在某一程序的实体里被定义的,那它只可以在 该程序的实体、构造体、进程中使用。3、当常数CS是在某一程序的构造体里被定义的,那它只可以 在该程序的该构造体、该进程中使用。4、当常数CS是在构造体里某一进程中被定义的,那它只可以 在该进程中使用。3.6.2 变量变量 P68 变量是局部量,只能在进程和子程序中被定义和使用,主要是作为临时的数据存储单元。1、定义方式:variable 变量名称:数据类型 :=初始值;例:Variable a:integer range 0 to 15 ;定义变量a为整数类型,取值范围在015。Varia
4、ble b:std_logic :=1;定义变量b为std_logic(标准位)类型,初始值为1,后面如果程序 有对它赋值,b的数值将=最后的赋值。2、赋值方式 变量名:=表达式a:=b;b:=3.0;c:=d+e;3.6.3 3.6.3 信号信号 信号是全局量,能在包集合、实体、结构体中被定义和使用,主要是作为类似于连接线的作用。在进程和子程序中是不能被定义。1、定义方式:signal 变量名称:数据类型 :=初始值;例:signal c:integer range 0 to 15 ;定义信号量a为整数类型,取值范围在015。signal d:std_logic :=1;定义信号量b为std
5、_logic(标准位)类型,初始值为1。2、赋值方式 信号量名=表达式A=b;B=3.0;C=d+e;3.6.4 信号和变量的区别信号变量适用范围在整个结构体内的任何地方都能适用只能在所定义的进程中使用可否作为敏感量可不可赋值特性在进程的最后才对信号赋值,所以需要延时一个时间段,才能将新的数值传递给信号。立即赋值同一个信号可以在多个进程中的值是唯一的在不同进程中的值是可以不同的例例5-3 5-3 例例5-4 5-4 Architecture bhv of dff4 isArchitecture bhv of dff4 isBeginBeginProcess(clk)Process(clk)Va
6、riable a,b:std_logic;Variable a,b:std_logic;BeginBeginIf(clkevent and clk=1)thenIf(clkevent and clk=1)thena:=D1;a:=D1;b:=a;b:=a;Q1:=b;Q1:=b;End if;End if;End process;End process;End bhv;End bhv;Architecture bhv of dff3 isArchitecture bhv of dff3 isSignal a,b:std_logic;Signal a,b:std_logic;BeginBegin
7、Process(clk)Process(clk)BeginBeginIf(clkevent and clk=1)thenIf(clkevent and clk=1)thena=D1;a=D1;b=a;b=a;Q1=b;Q1=b;End if;End if;End process;End process;End bhv;End bhv;clkd1abq1000001110020010300014000051100600107000180000clkd1abq1000001111120000300004000051111600007000080000例例5-3(5-3(信号信号)例例5-4(5-4
8、(变量变量)六盏彩灯控制CD1要求1、六盏灯编号分别为Y1、Y2、Y3、Y4、Y5、Y6;2、有一“控制方式选择键”,当电路的电源接通后,该选择键为0时,彩灯点亮顺序为Y1、Y3、Y5。3、当该选择键为1时,彩灯点亮顺序为Y2、Y4、Y6。4、每盏灯依次隔1秒被点亮。画出外围电路、写出流程程序library ieee;use ieee.std_logic_1164.all;use;use;entity cd1 is port(clk,xz:in std_logic;y1,y2,y3,y4,y5,y6:out std_logic);end cd1;architecture rtl of cd1
9、issignal a1,b2,c3,d4,e5,f6:std_logic;Begin process(clk,xz)beginif(clkevent and clk=1)then if(xz=0)then a1=1;c3=a1;e5=c3;elsif(xz=1)then b2=1;d4=b2;f6=d4;end if;end if;y1=a1;y2=b2;y3=c3;y4=d4;y5=e5;y6=f6;end process;end rtl;cd1要求1、六盏灯编号分别为Y1、Y2、Y3、Y4、Y5、Y6;2、有一“控制方式选择键”,当电路的电源接通后,该选择键为0时,彩灯点亮顺序为Y1、Y3
10、、Y5。3、当该选择键为1时,彩灯点亮顺序为Y2、Y4、Y6。4、每盏灯依次隔1秒被点亮,按下复位键灯都灭。画出外围电路、写出流程六盏彩灯控制CD2程序entity cd2 is port(clk,xz:in std_logic;y1,y2,y3,y4,y5,y6:out std_logic);end cd2;architecture rtl of cd2 issignal a1,b2,c3,d4,e5,f6:std_logic;Begin process(clk,xz,rs)BeginIf (rs=1)thena1=0;b2=0;c3=0;d4=0;e5=0;f6=0;elsif(clkev
11、ent and clk=1)then if(xz=0)then a1=1;c3=a1;e5=c3;elsif(xz=1)then b2=1;d4=b2;f6=d4;end if;end if;y1=a1;y2=b2;y3=c3;y4=d4;y5=e5;y6=f6;end process;end rtl;cd23人抢答器1要求1、第1个按下抢答按钮的人,抢答器将点亮他的灯并保持,其他2人的抢答信号无效。2、主持人按下复位键后,灯灭,才可以接受下一次的抢答。画出外围电路、写出流程entity qdq1 isentity qdq1 is port(q1,q2,q3,rs:in std_logic;p
12、ort(q1,q2,q3,rs:in std_logic;y1,y2,y3:out std_logic);y1,y2,y3:out std_logic);end qdq1;end qdq1;architecture rtl of qdq1 isarchitecture rtl of qdq1 issignal qdsignal qd,xh:std_logic;xh:std_logic;beginbeginprocess(q1,q2,q3,qd,rs,xh)process(q1,q2,q3,qd,rs,xh)beginbeginqd=q1 or q2 or q3;qd=q1 or q2 or q
13、3;if(rs=1)then if(rs=1)then y1=0;y1=0;y2=0;y2=0;y3=0;y3=0;xh=0;xh=0;elsif(qdevent and qd=1)then elsif(qdevent and qd=1)then if(q1=1 and if(q1=1 and xh=0)xh=0)then then y1=1;y2=0;y1=1;y2=0;y3=0;y3=0;xh=1;xh=1;elsif(q2=1 and elsif(q2=1 and xh=0)xh=0)then then y1=0;y2=1;y1=0;y2=1;y3=0;y3=0;xh=1;xh=1;el
14、sif(q3=1 and elsif(q3=1 and xh=0)xh=0)then then y1=0;y2=0;y1=0;y2=0;y3=1;y3=1;xh=1;xh=1;end if;end if;end if;end if;end process;end process;end rtl;end rtl;qdq13人抢答器2要求1、第1个按下抢答按钮的人,抢答器将 点亮他的灯并保持,其他2人的抢答信号无效。2、如果同时有2人或3人按下抢答按钮,抢答信号无效。3、主持人按下复位键后,灯灭,才可以接受下一次的抢答。4、显示第1个抢答成功的号码。防盗产品3 参考答案要求:1、当有人靠近红外线探
15、测器工作范围时,要求有闪烁的红光和报警声。2、“功能选择键”为0低电平时选择A的功能要求,当“功能选择键”为1高电平时选择B的功能要求,A、当人离开红外线探测器工作范围时,要求立即停止闪烁的红光和报警声。B、当人离开红外线探测器工作范围时,闪烁的红光和报警声仍然存在,只有按下复位键,才能停止闪烁的红光和报警声。作业要完成内容:1、外围电路2、程序3、仿真后的正确波形图防盗产品3 architecture rtl of fang_dao3 isbeginprocess(fdxh,rs,xz)begin if(rs=1)then bjsy=0;bjdg=0;elsif(xz=0 and fdxh=
16、1)then bjsy=1;bjdg=1;elsif(fdxhevent and fdxh=1)then if(xz=1)then bjsy=1;bjdg=1;end if;end if;end process;end rtl;entity fang_dao3 isentity fang_dao3 is port(fdxh,rs,xz,port(fdxh,rs,xz,pdpd:in std_logic;:in std_logic;bjsy,bjdg:out std_logic);bjsy,bjdg:out std_logic);end fang_dao3;end fang_dao3;archi
17、tecture rtl of fang_dao3 isarchitecture rtl of fang_dao3 isbeginbeginprocess(fdxh,rs,xz,pd)process(fdxh,rs,xz,pd)beginbeginif(rs=1 if(rs=1 or(pd=0 and xz=0 and fdxh=0)or(pd=0 and xz=0 and fdxh=0)thenthen bjsy=0;bjsy=0;bjdg=0;bjdg=0;elsif(xz=0 and fdxh=1)thenelsif(xz=0 and fdxh=1)then bjsy=1;bjsy=1;bjdg=1;bjdg=1;elsif(fdxhevent and fdxh=1)then elsif(fdxhevent and fdxh=1)then if(xz=1)then if(xz=1)then bjsy=1;bjsy=1;bjdg=1;bjdg=1;end if;end if;end if;end if;end process;end process;end rtl;end rtl;
限制150内