显示电路的设计._第1页
显示电路的设计._第2页
显示电路的设计._第3页
显示电路的设计._第4页
显示电路的设计._第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、进程中的信号与变量赋值语句一,在结构体中的位置 信号 变量基本用法 作为电路中的信号连线 作为进程中局部数据存储单元适用范围 结构体内的任何地方适用 只能在所定义的进程中使用 行为特性 在进程的最后才对信号赋值 立即赋值 可以设置传输延迟量 不能设置传输延迟量ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1: STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK =1 THEN Q1= D; END IF ; Q=Q1;END PROCESS;END bhv;ARCHITECTURE bhv OF DFF1

2、IS BEGIN PROCESS (CLK) VARIABLE Q1: STD_LOGIC BEGIN IF CLKEVENT AND CLK =1 THEN Q1= D; END IF ; Q=Q1;END PROCESS;END bhv;在不完整的条件语句中,单独的变量或信号赋值语句都能产生相同的D触发器。二 ,在延时特性上的区别延时: VHDL中,赋值操作并非立即发生,而是要经历一个模拟器 最小分辨时间后,才将赋值。可以把看成是实际电路 存在的固有延时量。1,信号的赋值需要有一个延时。 例: 当执行到表达式 A=D1时, D1向A的赋值是在一个延时后发生的。2,在进程中,信号赋值和变量赋

3、值语句都必须在一个延时中完成。 而且,进程中的所有信号赋值语句在进程启动的一瞬间立即执行 赋值操作,但须在一个延时后完成赋值(即令赋值对象的值 发生更新),并且必须在遇到“END PROCESS”语句时发生。知识点3,在进程中存在同一信号有多个赋值源(对同一信号多次赋值), 实际完成赋值(赋值对象发生更新)的信号是最接近 “END PROCESS”的那句。例1:SIGNAL e1 ,.: STD_LOGIC _VECTOR (3 DOWNTO 0) ;.PROCESS ( in1 ,in2 ,)VARIABLE c1 ,.: STD_LOGIC_VECTOR (3 DOWNTO 0) ; BE

4、GIN IF in1 =1 THEN e1 = “1010” ;.IF in2 =0 THEN .C1 := “0011” ;END IF ;END PROCESS ; 理解:假设进程在2ns+的时刻被启动, 在2ns+ 时刻信号e1被赋值为1010,变量c1被赋值为0011, 即变量c1在赋值的瞬间(2ns+ 时刻)既被更新, 但因为e1是信号的值,要在一个 后(2ns+2)时刻 才更新。 所以c1获得0011值的时刻 比e1获得1010的时刻早一个。ARCHITECTURE bhv OF DFF3 IS SIGNAL A ,B: STD_LOGIC; BEGIN PROCESS (CLK)

5、 BEGIN IF CLKEVENT AND CLK =1 THEN A= D1; B = A; Q1 = B; END IF ; END PROCESS;END bhv;例2:理解:3个赋值语句都必须在遇到END PROCESS 后的时刻内执行 (完成赋值),所以它们有并行执行的特性。 所以, A= D1中的A 和 B = A的 A并非是同一时刻的值。 B = A 中的 B和 Q1 = B的B 也并非是同一时刻的值。 因此,同一时刻中,D1不可能将值传到Q1,使Q1得到更新。 实际运行中,A被更新的值是上一时钟周期的D1, B被更新的值是上一时钟周期的A, Q1被更新的值是上一时钟周期的B。

6、CLKD QD QD QD1Q1ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE A ,B: STD_LOGIC BEGIN IF CLKEVENT AND CLK =1 THEN A= D1; B = A; Q1 = B; END IF ;END PROCESS;END bhv;例3:理解:由于A,B是变量,它们的赋值更新是立即发生的。 当3条语句顺序执行时,A和B 有了传递数据的功能。 实际执行时,在一个时刻内D1传给A,A 传给B,B 传给Q1。 A和B只担当了D1数据的暂存单元,Q1被更新的值是上一时钟 周期的D1。D Q

7、D1CLKQ1ARCHITECTURE bhv OF DFF3 IS SIGNAL A ,B: STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK =1 THEN A= D1; B = A; Q1 = B; END IF ; END PROCESS;END bhv;ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE A ,B: STD_LOGIC BEGIN IF CLKEVENT AND CLK =1 THEN A= D1; B = A; Q1 = B; END IF

8、;END PROCESS;END bhv;例2:D QD1CLKQ1例3:CLKD QD QD QD1Q1 在进程中,信号赋值和变量赋值语句都必须在一个延时中完成。 而且,进程中的所有信号赋值语句在进程启动的一瞬间立即执行 赋值操作,但须在一个延时后完成赋值(即令赋值对象的值 发生更新),并且必须在遇到“END PROCESS”语句时发生。ARCHITECTURE bhv OF mux4 IS SIGNAL mux: INTEGER RANGE 7 DOWNTO 0; BEGIN PROCESS (a, b) BEGIN mux = 0 ; IF (a=1) THEN mux = mux +1

9、 ; END IF ; IF (b=1) THEN mux = mux +2 ; END IF ; .END PROCESS;END bhv;例4:ARCHITECTURE bhv OF mux4 IS BEGIN PROCESS (a,b) VARIABLE mux: INTEGER RANGE 7 DOWNTO 0; BEGIN mux = 0 ; IF (a=1) THEN mux = mux +1 ; END IF ; IF (b=1) THEN mux = mux +2 ; END IF ; .END PROCESS;END bhv;例5:在进程中存在同一信号有多个赋值源(对同一信号

10、多次赋值)实际完成赋值(赋值对象发生更新)的信号是最接近 “END PROCESS”的那句。显示电路的设计显示电路的设计数码管的显示数据方式有静态显示和动态显示两种。静态显示就是将被显示的数据的BCD码,通过各自的4-7显示译码器译码后,分别接到显示译码器7的显示驱动段a-g端。动态显示就是将被显示的数据的BCD码,按照一定的变化频率,在不同的时刻周期分别的送到一个数据总线上,再通过一个公共的4-7显示译码器后,接到多个显示译码器公共显示驱动段a-g上,同时,在不同的时刻周期性的选通对应的数码管的公共端com。一个4位二进制加法计数器的静态显示的VHDL程序LIBRARY IEEE ;USE

11、IEEE.STD_LOGIC_1164.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY CNTDISPLAY IS PORT ( CLK : IN STD_LOGIC ; DOUT : OUT STD_LOGIC_VECTOR (6 DOWNTO 0 ); END ;ARCHITECTURE bhv OF CNT4 IS SIGNAL CNT4B :STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK =1 THEN CNT4B DOUT DOUT D

12、OUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT =“0000000”; END CASE; END PROCESS; END BHV;数码管动态扫描显示电路设计一个8位二进制并行半加器,要求被加数,加数和加法运算和用动态扫描的方式在数码管上同时显出。LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY DISPLAY IS PORT ( CLK : IN STD_LOGIC ; AIN

13、 : IN STD_LOGIC_VECTOR (7 DOWNTO 0 ); -被加数 BIN : IN STD_LOGIC_VECTOR (7 DOWNTO 0 ); -加数 SUM0,SUM1,SUM2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COM : OUT STD_LOGIC_VECTOR (7 DOWNTO 0 ); SEG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY DISPLAY;ARCHITECTURE hav OF CNT10 IS SINGAL AA,BB.SINT : STD_LOGIC_VEC

14、TOR(8 DOWNTO 0); SINGAL CNT : STD_LOGIC_VECTOR(2 DOWNTO 0); SINGAL BCD : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN -加法运算AA=0&AIN;BB=0&BIN;SINT=AA+BB;SUM0=SINT(3 DOWNTO 0);SUM1=SINT(7 DOWNTO 4);SUM2=“000”&SINT(8);PROCESS(CLK) -产生动态扫描显示的控制信号BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT=“111” THEN CNT=“000”; ELSE

15、CNTBCD=AIN(3 DOWNTO 0); COMBCD=AIN(7 DOWNTO 4); COMBCD=BIN(3 DOWNTO 0); COMBCD=BIN(7 DOWNTO 4); COMBCD=SINT(3 DOWNTO 0); COMBCD=SINT(7 DOWNTO 4); COMBCD=“000”&SINT(8); COMBCD=0000”; COM SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG DOUT =“00000000”; END CASE; END PROCESS; END BHV;.

16、ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR (0 TO 7); output : OUT STD_LOGIC_VECTOR (0 TO 2) ) ;END coder;ARCHITECTURE behav OF coder IS SIGNAL SINT : STD_LOGIC_VECTOR (4 DOWNTO 0); BEGIN PROCESS (din ) BEGIN IF (din (7) =0 THEN output =“000” ;ELSIF (din (6) =0 THEN output =“100” ;ELSIF (din (5

17、) =0 THEN output =“010” ;ELSIF (din (4) =0 THEN output =“110” ;ELSIF (din (3) =0 THEN output =“001” ;ELSIF (din (2) =0 THEN output =“101” ;ELSIF (din (1) =0 THEN output =“011” ; ELSE output = “111” ; END IF ;END PROCESS;END behav ;8-3优先编码器带有并行置位的移位寄存器带有并行置位的移位寄存器LIBRARY IEEE ;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;ARCHITECTUR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论