版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 VHDL设计应用实例 6.1 8位加法器的设计 6.3 序列检测器的设计 6.4 正负脉宽数控调制信号发生器的设计 6.5 数字频率计的设计 6.6 数字秒表的设计 6.1 8位加法器的设计 1设计思路 加法器是数字系统中的基本逻辑器件。多位加法器的构成有两种方式:并行进位和串行进位。并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。 4位二进制并行加法器和串行级联加法器占用几乎相同的资源。多位加法器由4位二进制并行加法器级联构成是较好折中选择。 本设计中的8位二进制并行加法器即是由两个4位二进制并行加法器级联而成的,其电路原理图如图6.1所示。图
2、6.1 8位加法器电路原理图 2VHDL源程序1) 4位二进制并行加法器的源程序ADDER4B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B IS -4位二进制并行加法器PORT(C4: IN STD_LOGIC; -低位来的进位 A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位加数 B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位被加数 S4: OUT STD_LOGIC_VECTOR(3 DO
3、WNTO 0);-4位和 CO4: OUT STD_LOGIC); -进位输出END ENTITY ADDER4B;ARCHITECTURE ART OF ADDER4B ISSIGNAL S5:STD_LOGIC_VECTOR(4 DOWNTO 0); -中间结果SIGNAL A5,B5: STD_LOGIC_VECTOR(4 DOWNTO 0); -扩展加数以及被加数位BEGIN A5=0& A4; -将4位加数矢量扩为5位,为进位提供空间 B5=0& B4; -将4位被加数矢量扩为5位,为进位提供空间 S5=A5+B5+C4 ; S4=S5(3 DOWNTO 0); -四位和给S4 CO
4、4C8,A4=A8(3 DOWNTO 0),B4=B8(3 DOWNTO0), S4=S8(3 DOWNTO 0),CO4=SC);U2:ADDER4B -例化(安装)一个4位二进制加法器U2PORT MAP(C4=SC, A4=A8(7 DOWNTO 4), B4=B8(7 DOWNTO 4), S4=S8 (7 DOWNTO 4),CO4=CO8);END ARCHITECTURE ART;6.3 序列检测器的设计 1设计思路 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。如图
5、6.3所示,当一串待检测的串行数据进入检测器后,若此数在每一位的连续检测中都与预置的密码数相同,则输出“A”,否则仍然输出“B”。图6.3 8位序列检测器逻辑图 2VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CHK IS PORT(DIN:IN STD_LOGIC; -串行输入数据位 CLK,CLR:IN STD_LOGIC; -工作时钟/复位信号 D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -8位待检测预置数 AB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -检测结果输出EN
6、D ENTITY CHK;ARCHITECTURE ART OF CHK IS SIGNAL Q :INTEGER RANGE 0 TO 8;-作为标志位BEGINPROCESS ( CLK,CLR) ISBEGINIF CLR= 1 THEN Q IF DIN =D(7) THEN Q= 1 ;ELSE Q IF DIN =D(6) THEN Q= 2 ;ELSE Q IF DIN =D(5) THEN Q= 3 ;ELSE Q IF DIN =D(4) THEN Q= 4 ;ELSE Q IF DIN =D(3) THEN Q= 5 ;ELSE Q IF DIN =D(2) THEN Q=
7、 6 ;ELSE Q IF DIN =D(1) THEN Q= 7 ;ELSE Q IF DIN =D(0) THEN Q= 8 ;ELSE Q Q=0; END CASE; END IF ;END PROCESS;PROCESS(Q) IS -检测结果判断输出BEGINIF Q= 8 THEN AB= 1010; -序列数检测正确,输出“A”ELSE AB= 1011; -序列数检测错误,输出“B” END IF ;END PROCESS;END ARCHITECTURE ART;6.4 正负脉宽数控调制信号发生器的设计 1设计思路 图6.4 是脉宽数控调制信号发生器逻辑图,此信号发生器是由
8、两个完全相同的可自加载加法计数器LCNT8组成的,它的输出信号的高低电平脉宽可分别由两组8位预置数进行控制。图6.4 脉宽数控调制信号发生器逻辑图 2VHDL源程序1) 8位可自加载加法计数器的源程序LCNT8.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164,.ALL;ENTITY LCNT8 IS -8位可自加载加法计数器 PORT(CLK,LD:IN STD_LOGIC; -工作时钟/预置值加载信号 D:IN INTEGER RANGE 0 TO 255 -8位分频预置数 CAO:OUT STD_LOGIC); -计数溢出输出END ENTITY LCNT8
9、;ARCHITECTURE ART OF LCNT8 IS SIGNAL COUNT:INTEGER RANGE 0 TO 255; -8位计数器设置BEGINPROCESS ( CLK ) ISBEGIN IF CLKEVENT AND CLK= 1 THEN IF LD= 1 THEN COUNT=D; -LD为高电平时加载预置数 ELSE COUNT=COUNT+1; -否则继续计数 END IF; END IF;END PROCESS; PROCESS (CLK, COUNT) ISBEGIN IF CLKEVENT AND CLK=1 THEN IF COUNT=255 THEN C
10、AO= 1;ELSE CAOCLK,LD=LD1,D=A,CAO=CAO1);U2:LCNT8 PORT MAP(CLK=CLK,LD=LD2,D=B,CAO=CAO2);PROCESS(CAO1,CAO2) ISBEGINIF CAO1= 1 THEN PSINT= 0;-计数溢出信号清0ELSIF CAO2 EVENT AND CAO2= 1 THEN PSINT=1;END IF;END PROCESS;LD1=NOT PSINT;LD2=PSINT;PSOUT=PSINT;END ARCHITECTURE ART; 6.5 数字频率计的设计 1. 设计思路 图6.5是8位十进制数字频率
11、计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、八个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。 图6.5 8位十进制数字频率计逻辑图 1) 测频控制信号发生器设计 频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。要使计数使能信号TSTEN能产生一个1秒脉宽的周期信号,对每个计数器CNT10的ENA使能端进行同步控制。 TSTEN为高电平时,计数;低电平时,停止计数,并保持当前值。 测频控制信号发生器的工作时序如图6.6所示。为了产生这个时序图,需建立一个由D触发器构成的二分频器,在每次时钟CLK(1HZ)上沿到来时, TSTEN值翻转,脉宽为1秒,作为
12、闸门信号。 图6.6 测频控制信号发生器工作时序 2) 寄存器REG32B设计 设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。 3) 十进制计数器CNT10的设计 如图6.5所示,此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时计数禁止。 2. VHDL源程序1) 有时钟使能的十进制计数器的源程序CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK:IN STD_LOGIC; -计数时钟信号 CLR:IN STD_LOG
13、IC; -清零信号 ENA:IN STD_LOGIC; -计数使能信号 CQ:OUT INTEGER RANGE 0 TO 15;-4位计数结果输出 CARRY_OUT:OUT STD_LOGIC); -计数进位输出END ENTITY CNT10;ARCHITECTURE ART OF CNT10 IS SIGNAL CQI :INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,CLR,ENA) ISBEGINIF CLR= 1 THEN CQI= 0; -计数器异步清零ELSIF CLKEVENT AND CLK= 1 THEN IF ENA= 1 THEN IF
14、 CQI9 THEN CQI=CQI+1; ELSE CQI=0;END IF;-等于9,则计数器清零 END IF; END IF; END PROCESS; PROCESS (CQI) IS BEGIN IF CQI=9 THEN CARRY_OUT= 1; -进位输出 ELSE CARRY_OUT= 0;END IF; END PROCESS; CQ=CQI;END ARCHITECTURE ART;2) 32位锁存器的源程序REG32B.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT(LOAD:IN
15、STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT:OUT STD_LOGEC_VECTOR(31 DOWNTO 0);END ENTITY REG32B;ARCHITECTURE ART OF REG32B IS BEGINPROCESS ( LOAD, DIN ) ISBEGINIF LOAD EVENT AND LOAD= 1 THEN DOUT=DIN; -锁存输入数据 END IF;END PROCESS;END ARCHITECTURE ART;3) 测频控制信号发生器的源程序TESTCTL.VHD LIBRARY IEEE;
16、USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY TESTCTL IS PORT (CLK:IN STD_LOGIC; -1 Hz测频控制时钟 TSTEN:OUT STD_LOGIC; -计数器时钟使能 CLR_CNT:OUT STD_LOGIC; -计数器清零 LOAD:OUT STD_LOGIC); -输出锁存信号END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL IS SIGNAL DIV2CLK :STD_LOGIC;BEGINPROCESS ( CLK ) I
17、S BEGINIF CLKEVENT AND CLK= 1 THEN -1 HZ时钟二分频DIV2CLK=NOT DIV2CLK;END IF ;END PROCESS;PROCESS ( CLK,DIV2CLK ) ISBEGIN IF CLK= 0 AND DIV2CLK = 0 THEN CLR_CNT= 1; -0.5S后产生计数器清零信号 ELSE CLR_CNT= 0 ; END IF; END PROCESS; LOAD=NOT DIV2CLK; TSTENCLK,TSTEN=SE, CLR_CNT=SC,LOAD=SL);U1:CNT10 PORT MAP(CLK=FSIN,C
18、LR=SC,ENA=SE,CQ=SD (3 DOWNTO 0), CARRY_OUT=S1); -名字关联 U2:CNT10 PORT MAP(CLK=S1,CLR=SC,ENA=SE, CQ=SD (7 DOWNTO 4),CARRY_OUT=S2);U3:CNT10 PORT MAP(S2,SC,SE,SD (11 DOWNTO 8 ),S3);-位置关联U4:CNT10 PORT MAP(S3,SC,SE,SD (15 DOWNTO 12),S4);U5:CNT10 PORT MAP(S4,SC,SE,SD (19 DOWNTO 16),S5);U6:CNT10 PORT MAP(S5,
19、SC,SE,SD (23 DOWNTO 20),S6);U7:CNT10 PORT MAP(S6,SC,SE,SD (27 DOWNTO 24),S7);U8:CNT10 PORT MAP(S7,SC,SE,SD (31 DOWNTO 28),S8);U9:REG32B PORT MAP(LOAD=SL,DIN=SD(31 DOWNTO 0),DOUT=DOUT);END ARCHITECTURE ART;6.6 数字秒表的设计 1设计思路 设计一个计时范围为0.01秒1小时的数字秒表, 因此要有一个比较精确的计时基准信号,这里用周期为1/100 s的计时脉冲。对每一计数器需设置CLR清零信号
20、输入外,并在六个计数器设置时钟使能信号ENA,即计时允许信号。因此数字秒表可由一个分频器、四个十进制计数器(1/100秒、1/10秒、1秒、1分)以及两个六进制计数器(10秒、10分)组成,如图6.7所示。 图6.7中六个4位二进制计数输出的最小显示值分别为:DOUT3.01/100秒、DOUT7.41/10秒、DOUT11.81秒、DOUT15.1210秒、DOUT19.161分、DOUT23.2010分。图6.7 数字秒表电路逻辑图 2. VHDL源程序1) 3 MHz100 Hz分频器的源程序CLKGEN.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.A
21、LL;ENTITY CLKGEN IS PORT (CLK:IN STD_LOGIC; -3 MHz信号输入 NEWCLK:OUT STD_LOGIC); -100 Hz计时时钟信号输出END ENTITY CLKGEN;ARCHITECTURE ART OF CLKGEN IS SIGNAL CNTER:INTEGER RANGE 0 TO 10#29999#;-十进制计数预制数BEGINPROCESS(CLK) IS -分频计数器,由3 MHz时钟产生100 Hz信号BEGIN IS IF CLKEVENT AND CLK=1 THEN IF CNTER=10#29999# THEN CN
22、TER=0; -3 MHz信号变为100 Hz,计数常数为30000ELSE CNTER=CNTER+1; END IF; END IF;END PROCESS;PROCESS(CNTER) IS -计数溢出信号控制BEGIN IF CNTER=10#29999# THEN NEWCLK=1; ELSE NEWCLK=0; END IF;END PROCESS;END ARCHITECTURE ART; 2) 六进制计数器的源程序CNT6.VHD(十进制计数器的源程序CNT10.VHD与此类似)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.
23、STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORT (CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; ENA: IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT: OUT STD_LOGIC );END ENTITY CNT6;ARCHITECTURE ART OF CNT6 IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK,CLR,ENA) IS BEGIN IF CLR=1 THEN CQI=
24、0000; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN IF CQI=“0101” THEN CQI=“0000”;-六进制为0101 十进制计数器为1001 ELSE CQI=CQI+1;END IF; END IF; END IF; END PROCESS; PROCESS(CQI) IS BEGIN IF CQI=“0000” THEN CARRY_OUT=1; ELSE CARRY_OUT=0;END IF; END PROCESS; CQCLK,NEWCLK=S0); -名字关联 U1:CNT10 PORT MAP(S0, CLR, ENA
25、, DOUT(3 DOWNTO 0),S1); -位置关联 U2:CNT10 PORT MAP(S1, CLR, ENA, DOUT(7 DOWNTO 4),S2); U3:CNT10 PORT MAP(S2, CLR, ENA, DOUT(11 DOWNTO 8),S3); U4:CNT6 PORT MAP(S3, CLR, ENA, DOUT(15 DOWNTO 12),S4); U5:CNT10 PORT MAP(S4, CLR, ENA, DOUT(19 DOWNTO 16),S5); U6:CNT6 PORT MAP(S5, CLR, ENA, DOUT(23 DOWNTO 20);
26、END ARCHITECTURE ART; 6.7 MCS-51单片机与FPGA/CPLD总线接口逻辑设计 单片机具有性能价格比高、功能灵活、易于人机对话和良好的数据处理能力等特点;PLD则具有高速、高可靠以及开发便捷规范等方面的优点,以此两类器件相结合的电路结构在许多高性能仪器仪表和电子产品中被广泛应用。单片机与CPLD的接口方式一般有两种,即总线方式与独立方式。 单片机以总线方式与FPGA/CPLD进行数据与控制信息通信有许多优点: (1) 速度快。其通信工作时序是纯硬件行为,对于MCS-51单片机,只需一条单字节指令就能完成所需的读/写时序,如:MOV DPTR,A;MOV A,DPTR
27、。 (2) 节省PLD芯片的I/O口线。如图6.8,如果将图中的译码DECODER设置足够的译码输出,以及安排足够的锁存器,就能仅通过19根I/O口线在FPGA/CPLD与单片机之间进行各种类型的数据与控制信息交换。 图6.8 CPLD/FPGA与MCS-51单片机的总线接口通信逻辑图 (3) 相对于非总线方式,单片机的编程便捷,控制可靠。 (4) 在FPGA/CPLD中通过逻辑切换,单片机易于与SRAM或ROM接口。这种方式有许多实用之处,如利用类似于微处理器DMA的工作方法,首先由FPGA/CPLD与接口的高速A/D等器件进行高速数据采样,并将数据暂存于SRAM中,采样结束后,通过切换,使
28、单片机与SRAM以总线方式进行数据通信,以便发挥单片机强大的数据处理能力。 1设计思路 对单片机与FPGA/CPLD以总线方式通信的逻辑设计, 应详细了解单片机的总线读/写时序,根据时序图来设计逻辑结构。图6.9是MCS-51系列单片机的时序图,其时序电平变化速度与单片机工作时钟频率有关。 图6.9 MCS-51单片机总线接口方式工作时序 2. VHDL源程序LIBRARY IEEE; -MCS-51单片机读/写电路USE IEEE.STD_LOGIC_1164.ALL;ENTITY MCS_51 IS PORT( -与8031接口的各端口定义: P0:INOUT STD_LOGIC_VECT
29、OR(7 DOWNTO 0); -双向地址/数据口 P2:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -高8位地址线 RD,WR:IN STD_LOGIC; -读、写允许 ALE:IN STD_LOGIC; - 地址锁存 READY:IN STD_LOGIC; -待读入数据准备就绪标志位AD_CS:OUT STD_LOGIC;-A/D器件片选信号DATAIN1:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -单片机待读回信号LATCH1:IN STD_LOGIC; -读回信号锁存 DATOUT1:OUT STD_LOGIC_VECTOR(7 DOWNT
30、O 0); -锁存输出数据1 DATOUT2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -锁存输出数据2 END ENTITY MCS_51;ARCHITECTURE ART OF MCS_51 IS SIGNAL LATCH_ADDRES:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LATCH_OUT1:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LATCH_OUT2:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LATCH_IN1:STD_LOGIC_VECTOR(7 DOWN
31、TO 0); SIGNAL WR_ENABLE1:STD_LOGIC; SIGNAL WR_ENABLE2:STD_LOGIC;BEGINPROCESS ( ALE ) IS -低8位地址锁存进程BEGIN IF ALEEVENT AND ALE= 0 THEN LATCH_ADDRES=P0; -ALE的下降沿将P0口的低8位地址 END IF; -锁入锁存器LATCH_ADDRES中END PROCESS;PROCESS(P2,LATCH_ADDRES) IS -WR写信号译码进程1BEGIN IF ( LATCH_ADDRES= 11110101) AND ( P2= 01101111
32、) THEN WR_ENABLE1=WR; -写允许 ELSE WR_ENABLE1= 1; END IF ; -写禁止 END PROCESS;PROCESS ( WR_ENABLE1 ) IS -数据写入寄存器1BEGIN IF WR_ENABLE1EVENT AND WR_ENABLE1 = 1 THEN LATCH_OUT1= P0; END IF;END PROCESS;PROCESS (P2,LATCH_ADDRES ) IS -WR写信号译码进程2 BEGIN IF ( LATCH_ADDRES= 11110011)AND(P2= 00011111 ) THEN WR_ENABL
33、E2= WR; -写允许 ELSE WR_ ENABLE2= 1;END IF; -写禁止END PROCESS;PROCESS (WR_ENABLE2 ) IS -数据写入寄存器2BEGIN IF WR_ENABLE2EVENT AND WR_ENABLE2= 1 THEN LATCH_OUT2=P0; END IF;END PROCESS;PROCESS(P2,LATCH_ADDRES,READY,RD) IS -8031对PLD中数据读入进程BEGIN IF ( LATCH_ADDRES= 01111110 ) AND ( P2= 10011111 ) AND ( READY= 1) A
34、ND ( RD= 0 ) THEN P0=LATCH_IN1; -寄存器中的数据读入P0口 ELSE P0= ZZZZZZZZ;END IF ; -禁止读数,P0口呈高阻态 END PROCESS;PROCESS(LATCH1 ) IS -外部数据进入CPLD进程BEGIN IF LATCH1EVENT AND LATCH1= 1 THEN LATCH_IN1=DATAIN1; END IF;END PROCESS; PROCESS(LATCH_ADDRES) IS -A/D工作控制片选信号输出进程 BEGINIF ( LATCH_ADDRES= 00011110 ) THEN AD_CS=
35、0; -允许A/D工作 ELSE AD_CS= 1; END IF; - 禁止A/D工作 END PROCESS;DATOUT1=LATCH_OUT1; DATOUT2MR=0; MY0=0;MG0=1;BR=1; BY0=0; BG0=0; IF(SB AND SM)= 1 THEN IF S=45 THEN STATE=B;CLR:= 0; EN:= 0; ELSE STATE=A; CLR:= 1; EN:= 1; END IF; ELSIF(SB AND (NOT SM)= 1 THEN STATE=B;CLR:= 0;EN:= 0; ELSE STATEMR=0; MY0=1;MG0
36、=0;BR=1; BY0=0; BG0=0; IF S=5 THEN STATE=C;CLR:= 0; EN:= 0; ELSE STATEMR=1; MY0=0;MG0=0;BR=0; BY0=0; BG0=1; IF(SM AND SB)= 1 THEN IF S=25 THEN STATE=D;CLR:=0; EN:= 0; ELSE STATE=C; CLR:= 1; EN:= 1; END IF; ELSIF SB=0 THEN STATE=D;CLR:= 0; EN:= 0; ELSE STATEMR=1; MY0=0;MG0=0;BR=0; BY0=1; BG0=0; IF S=
37、5 THEN STATE=A;CLR:= 0; EN:= 0; ELSE STATE=D; CLR:= 1; EN:= 1; END IF; END CASE; END IF; END PROCESS CNT;END ARCHITECTURE ART;-CSKZ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CSKZ IS PORT(INA:IN STD_LOGIC; OUTA: OUT STD_LOGIC);END ENTITY CSKZ;ARCHITECTURE ART
38、OF CSKZ IS BEGIN PROCESS(INA) IS BEGIN IF INA=1 THEN OUTA=1; ELSE OUTA=0; END IF; END PROCESS;END ARCHITECTURE ART; -CNT45S.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT45S IS PORT(SB,CLK,EN45:IN STD_LOGIC; DOUT45M,DOUT45B: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);EN
39、D ENTITY CNT45S ;ARCHITECTURE ART OF CNT45S IS SIGNAL CNT6B: STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN PROCESS(SB,CLK,EN45) IS BEGIN IF SB=0 THEN CNT6B=CNT6B-CNT6B-1; ELSIF(CLKEVENT AND CLK= 1)THEN IF EN45=1 THEN CNT6B=CNT6B+1;ELSIF EN45=0 THEN CNT6BDOUT45M=01000101;DOUT45BDOUT45M=01000100;DOUT45BDOUT45M=
40、01000011;DOUT45BDOUT45M=01000010;DOUT45BDOUT45M=01000001;DOUT45BDOUT45M=01000000;DOUT45BDOUT45M=00111001;DOUT45BDOUT45M=00111000;DOUT45BDOUT45M=00110111;DOUT45BDOUT45M=00110110;DOUT45BDOUT45M=00110101;DOUT45BDOUT45M=00110100;DOUT45BDOUT45M=00110011;DOUT45BDOUT45M=00110010;DOUT45BDOUT45M=00110001;DOU
41、T45BDOUT45M=00110000;DOUT45BDOUT45M=00101001;DOUT45BDOUT45M=00101000;DOUT45BDOUT45M=00100111;DOUT45BDOUT45M=00100110;DOUT45BDOUT45M=00100101;DOUT45BDOUT45M=00100100;DOUT45BDOUT45M=00100011;DOUT45BDOUT45M=00100010;DOUT45BDOUT45M=00100001;DOUT45BDOUT45M=00100000;DOUT45BDOUT45M=00011001;DOUT45BDOUT45M=
42、00011000;DOUT45BDOUT45M=00010111;DOUT45BDOUT45M=00010110;DOUT45BDOUT45M=00010101;DOUT45BDOUT45M=00010100;DOUT45BDOUT45M=00010011;DOUT45BDOUT45M=00010010;DOUT45BDOUT45M=00010001;DOUT45BDOUT45M=00010000;DOUT45BDOUT45M=00001001;DOUT45BDOUT45M=00001000;DOUT45BDOUT45M=00000111;DOUT45BDOUT45M=00000110;DOU
43、T45BDOUT45M=00000101;DOUT45BDOUT45M=00000100;DOUT45BDOUT45M=00000011;DOUT45BDOUT45M=00000010;DOUT45BDOUT45M=00000001;DOUT45BDOUT45M=00000000;DOUT45B=00000000; END CASE; END PROCESS;END ARCHITECTURE ART;-CNT05S.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT05S
44、IS PORT(CLK,EN05M,EN05B:IN STD_LOGIC; DOUT5: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY CNT05S;ARCHITECTURE ART OF CNT05S IS SIGNAL CNT3B: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLK,EN05M,EN05B) ISBEGIN IF(CLKEVENT AND CLK= 1)THEN IF EN05M=1 THEN CNT3B=CNT3B+1; ELSIF EN05B=1 THEN CNT3B=CNT3B+1
45、; ELSIF EN05B=0 THEN CNT3BDOUT5DOUT5DOUT5DOUT5DOUT5DOUT5=00000000; END CASE; END PROCESS;END ARCHITECTURE ART;-CNT25S.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT25S IS PORT(SB,SM,CLK,EN25:IN STD_LOGIC; DOUT25M,DOUT25B: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END E
46、NTITY CNT25S;ARCHITECTURE ART OF CNT25S IS SIGNAL CNT5B: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(SB,SM,CLK,EN25) IS BEGIN IF SB=0 THEN CNT5B=CNT5B-CNT5B-1; ELSIF SM=0 THEN CNT5B=CNT5B-CNT5B-1; ELSIF(CLKEVENT AND CLK= 1)THEN IF EN25=1 THEN CNT5B=CNT5B+1; ELSIF EN25=0 THEN CNT5BDOUT25B=00100101;DO
47、UT25MDOUT25B=00100100;DOUT25MDOUT25B=00100011;DOUT25MDOUT25B=00100010;DOUT25MDOUT25B=00100001;DOUT25MDOUT25B=00100000;DOUT25MDOUT25B=00011001;DOUT25MDOUT25B=0011000 DOUT25MDOUT25B=00010111;DOUT25MDOUT25B=00010110;DOUT25MDOUT25B=00010101;DOUT25MDOUT25B=00010100;DOUT25MDOUT25B=00010011;DOUT25MDOUT25B=
48、00010010;DOUT25MDOUT25B=00010001;DOUT25MDOUT25B=00010000;DOUT25MDOUT25B=00001001;DOUT25MDOUT25B=00001000;DOUT25MDOUT25B=00000111;DOUT25MDOUT25B=00000110;DOUT25MDOUT25B=00000101;DOUT25MDOUT25B=00000100;DOUT25MDOUT25B=00000011;DOUT25MDOUT25B=00000010;DOUT25MDOUT25B=00000001;DOUT25MDOUT25B=00000000;DOU
49、T25M=00000000; END CASE; END PROCESS;END ARCHITECTURE ART;-XSKZ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XSKZ IS PORT(EN45,EN25,EN05M,EN05B:IN STD_LOGIC; AIN45M,AIN45B,AIN25M,AIN25B,AIN05: IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUTM,DOUTB: OUT STD_LOGIC_VECTOR(7
50、DOWNTO 0);END ENTITY XSKZ;ARCHITECTURE ART OF XSKZ IS BEGIN PROCESS(EN45,EN25,EN05M,EN05B,AIN45M,AIN45B,AIN25M,AIN25B,AIN05) IS BEGINIF EN45= 1 THEN DOUTM=AIN45M(7 DOWNTO 0);DOUTB=AIN45B(7 DOWNTO 0); ELSIF EN05M=1 THEN DOUTM=AIN05(7 DOWNTO 0);DOUTB=AIN05(7 DOWNTO 0); ELSIF EN25=1 THEN DOUTM=AIN25M(7
51、 DOWNTO 0);DOUTB=AIN25B(7 DOWNTO 0); ELSIF EN05B=1THEN DOUTM=AIN05(7 DOWNTO 0);DOUTBDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7CLK, SM=SM, SB=SB,MR=MR,MY0=EN2,MG0=EN1, BR=BR,BY0=EN4,BG0=EN3);U2:CSKZ PORT MAP(INA=EN1,OUTA=MG); U3:CSKZ PORT MAP(INA=EN2,OUTA=MY);U4:CSKZ PORT MAP(INA=EN3,OUT
52、A=BG);U5:CSKZ PORT MAP(INA=EN4,OUTA=BY);U6:CNT45S PORT MAP(CLK=CLK,SB=SB, EN45=EN1,DOUT45M=S45M,DOUT45B=S45B);U7:CNT05S PORT MAP(CLK=CLK, EN05M=EN2,DOUT5=S05,EN05B=EN4);U8:CNT25S PORT MAP(CLK=CLK,SM=SM,SB=SB,EN25=EN3,DOUT25M=S25M,DOUT25B=S25B);U9:XSKZPORT MAP(EN45=EN1,EN05M=EN2,EN25=EN3,EN05B=EN4, A
53、IN45M=S45M,AIN45B=S45B,AIN25M=S25M,AIN25B=S25B,AIN05=S05, DOUTM(3 DOWNTO 0)=YM1,DOUTM(7 DOWNTO 4)=YM2, DOUTB(3 DOWNTO 0)=YM3,DOUTB(7 DOWNTO 4)=YM4);U10:YMQ PORT MAP(AIN4=YM1,DOUT7=DOUT1);U11:YMQ PORT MAP(AIN4=YM2,DOUT7=DOUT2);U12:YMQ PORT MAP(AIN4=YM3,DOUT7=DOUT3);U13:YMQ PORT MAP(AIN4=YM4,DOUT7=DOU
54、T4);END ARCHITECTURE ART; 3. 硬件逻辑验证 选择实验电路结构图NO.6,由5.2节的实验电路结构图NO.6和图6.10确定引脚的锁定。时钟脉冲CLK可接CLOCK1(1 Hz);主干道和支干道来车信号SM、SB分别接键3和键4;主干道和支干道红、黄、绿灯驱动信号MR、MY、MG和BR、BY、BG分别接D1D3和D8D6;DOUT1、DOUT2驱动数码管5和数码管6显示主干道定时时间;DOUT3、DOUT4驱动数码管7和数码管8显示支干道定时时间。6.9 语音信箱控制系统的设计 1设计思路 语音信箱控制系统用于控制对语音信箱的有关操作,允许用户发送信息、重阅信息、存储
55、信息和擦除信息,状态转移图如图6.11所示。 图6.11 语音信箱控制器的状态转移图 2. VHDL源程序PACKAGE VM_PACK ISTYPE T_VM_STATE IS(MAIN_ST,REVIEW_ST, REPEAT_ST,SAVE_ST,ERASE_ST,SEND_ST,ADDRESS_ST,RECORD_ST,BEGIN_REC_ST,MESSAGE_ST);TYPE T_KEY(1,2,3,4,5,6,7,8,9,*,#);END PACKAGE VM_PACK;LIBRARY IEEE;USE WORK.VM_PACK,ALL;USE IEEE.STD_LOGIC_116
56、4.ALL;ENTITY CONTROL IS PORT(CLK,KEY:IN STD_LOGIC; PLAY,RECORD,ERASE,SAVE,ADDRESS:OUT STD_LOGIC);END ENTITY CONTROL;ARCHITECTURE ART OF CONTROL IS SIGNAL NEXT_STATE,CURRENT_STATE:T_VM_STATE;BEGINPROCESS(CURRENT_STATE,KEY) ISBEGINPLAY= 0;SAVE = 0;ERASE= 0;RECORD= 0;ADDRESS -看信箱 IF ( KEY=1) THEN NEXT_
57、STATE=REVIEW_ST; -转到重阅 ELSIF (KEY =2) THEN NEXT_STATE=SEND_ST ; -转到发送 ELSE NEXT_STATE -重阅IF (KEY=1)THEN NEXT_STATE=REPEAT_ST;ELSIF(KEY=2) THEN NEXT_STATE=SAVE_ST;ELSIF( KEY = 3) THEN NEXT_STATE =ERASE_ST;ELSIF( KEY = #) THEN NEXT_STATE =MAIN_ST;ELSE NEXT_STATE -重复PLAY= 1;NEXT_STATE -存信息 SAVE= 1;NEXT
58、_STATE -擦掉ERASE= 1;NEXT_STATE -发送NEXT_STATE -寻址ADDRESS= 1;IF (KEY=#)THEN NEXT_STATE=RECORD_ST;ELSENEXT_STATE -记录IF (KEY=5) THEN NEXT_STATE=BEGIN_REC_ST;ELSE NEXT_STATE -开始录音RECORD= 1;NEXT_STATE -记录录音RECORD= 1;IF (KEY=#)THEN NEXT_STATE=SEND_ST; -发送到信箱ELSE NEXT_STATE=MESSAGE_ST;END IF;END CASE;END PRO
59、CESS;PROCESS ISBEGINWAIT UNTIL (CLKEVENT AND CLK = 1);CURRENT_STATE OUTDONE = 0; -浮点乘法IN1 := INPUT1; WAIT UNTIL RISING_EDGE(CLOCK);REP(IN1);WAIT UNTIL RISING_EDGE(CLOCK);OUTPUT = TMP; OUTDONE OUTDONE = 0; -求倒数 IN1 := INPUT1; IN2 := INPUT2; WAIT UNTIL RISING_EDGE(CLOCK);MUL(IN1,IN2);WAIT UNTIL RISING
60、_EDGE(CLOCK);OUTPUT = TMP; OUTDONE OUTPUT = INPUT1 + INPUT2; -浮点加法WAIT UNTIL RISING_EDGE(CLOCK);OUTDONE OUTPUT = INPUT1- INPUT2; -浮点减法WAITUNTIL RISING_EDGE(CLOCK);OUTDONE OUTPUT = TMP; OUTDONE OUTDONE = 1; END CASE; END PROCESS;END ARCHITECTURE ART;2) PID控制器的源程序PID.VHDLIBRARY WORK;USE WORK.SYNCHRO.A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石河子大学《运动生理学》2021-2022学年第一学期期末试卷
- million的用法和搭配
- 石河子大学《田径教学训练理论与实践》2021-2022学年第一学期期末试卷
- 石河子大学《葡萄酒工艺学》2022-2023学年第一学期期末试卷
- 石河子大学《果蔬加工贮运学》2022-2023学年第一学期期末试卷
- 石河子大学《村镇规划》2023-2024学年第一学期期末试卷
- 沈阳理工大学《永磁电机》2023-2024学年期末试卷
- 沈阳理工大学《体育》2023-2024学年第一学期期末试卷
- 沈阳理工大学《内部控制》2023-2024学年期末试卷
- 沈阳理工大学《机械制造技术基础》2022-2023学年第一学期期末试卷
- 餐厅小票打印模板
- 腹胀护理课件
- 【时代峰峻公司“养成系”偶像的营销策略研究案例报告8700字(论文)】
- 水稻栽培技术-水稻常规栽培技术
- 常见营养相关慢性疾病的营养指导
- 标准报价单模板(二)
- 《mc入门教程》课件
- 物理化学实验B智慧树知到课后章节答案2023年下北京科技大学
- 建筑大师林徽因智慧树知到课后章节答案2023年下潍坊工程职业学院
- 塔里木盆地主要地震反射波组的说明
- 初中英语教学经验交流PPT教学课件
评论
0/150
提交评论