《EDA技术与VHDL VHDL状态机.pptx》由会员分享,可在线阅读,更多相关《EDA技术与VHDL VHDL状态机.pptx(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5.1 5.1 状态机设计相关语句状态机设计相关语句 5.1.1 5.1.1 类型定义语句类型定义语句 TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型;或TYPE 数据类型名 IS 数据类型定义;TYPE st1 IS ARRAY(0 TO 15)OF STD_LOGIC;TYPE week IS(sun,mon,tue,wed,thu,fri,sat);TYPE m_state IS (st0,st1,st2,st3,st4,st5);SIGNAL present_state,next_state :m_state ;TYPE BOOLEAN IS(FALSE,TRUE);第1
2、页/共62页5.1 5.1 状态机设计相关语句状态机设计相关语句 5.1.1 5.1.1 类型定义语句类型定义语句 TYPE my_logic IS (1,Z,U,0);SIGNAL s1:my_logic;s1=Z;SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;SUBTYPE digits IS INTEGER RANGE 0 to 9;第2页/共62页5.1 5.1 状态机设计相关语句状态机设计相关语句 5.1.2 5.1.2 状态机的优势状态机的优势 1状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;2 2由于状态机的结构相对简单,设计方案相对固定;3 3、状态
3、机容易构成性能良好的同步时序逻辑模块;4 4、与VHDLVHDL的其他描述方式相比,状态机的VHDLVHDL表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的好处;5 5、在高速运算和控制方面,状态机更有其巨大的优势。6 6、高可靠性。第3页/共62页5.1 5.1 状态机设计相关语句状态机设计相关语句 5.1.3 5.1.3 状态机结构状态机结构 1.说明部分 ARCHITECTURE.IS TYPE FSM_ST IS(s0,s1,s2,s3);SIGNAL current_state,next_state:FSM_ST;.第4页/共62页5.1 5.1
4、 状态机设计相关语句状态机设计相关语句 5.1.3 5.1.3 状态机结构状态机结构 2.主控时序进程 图5-1 一般状态机结构框图 第5页/共62页5.1 5.1 状态机设计相关语句状态机设计相关语句 5.1.3 5.1.3 状态机结构状态机结构 3.主控组合进程 4.辅助进程 第6页/共62页【例5-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS PORT(clk,reset :IN STD_LOGIC;state_inputs:IN STD_LOGIC_VECTOR(0 TO 1);comb_outputs:O
5、UT INTEGER RANGE 0 TO 15);END s_machine;ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS(s0,s1,s2,s3);-数据类型定义,状态符号化 SIGNAL current_state,next_state:FSM_ST;-将现态和次态定义为新的数据类型BEGIN REG:PROCESS(reset,clk)-主控时序进程 BEGIN IF reset=1 THEN current_state=s0;-检测异步复位信号 ELSIF clk=1 AND clkEVENT THEN current_state
6、comb_outputs=5;IF state_inputs=00 THEN next_state=s0;ELSE next_state comb_outputs=8;IF state_inputs=00 THEN next_state=s1;ELSE next_state comb_outputs=12;IF state_inputs=11 THEN next_state=s0;ELSE next_state comb_outputs=14;IF state_inputs=11 THEN next_state=s3;ELSE next_state=s0;END IF;END case;END
7、 PROCESS;END behv;第8页/共62页5.1 5.1 状态机设计相关语句状态机设计相关语句 5.1.3 5.1.3 状态机结构状态机结构 图5-2 例5-1状态机的工作时序 第9页/共62页5.2 Moore5.2 Moore状态机状态机 5.2.1 5.2.1 多进程状态机多进程状态机 图5-3 ADC0809工作时序 第10页/共62页5.2 Moore5.2 Moore状态机状态机 5.2.1 5.2.1 多进程状态机多进程状态机 图5-4 控制ADC0809采样状态图 第11页/共62页5.2 Moore5.2 Moore状态机状态机 5.2.1 5.2.1 多进程状态机
8、多进程状态机 图5-5 采样状态机结构框图 第12页/共62页【例5-2】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);-来自0809转换好的8位数据CLK :IN STD_LOGIC;-状态机工作时钟EOC :IN STD_LOGIC;-转换状态指示,低电平表示正在转换ALE :OUT STD_LOGIC;-8个模拟信号通道地址锁存信号START :OUT STD_LOGIC;-转换开始信号OE :OUT STD_LOGIC;-数据输出3态控制
9、信号ADDA :OUT STD_LOGIC;-信号通道最低位控制信号LOCK0 :OUT STD_LOGIC;-观察数据锁存时钟Q :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-8位数据输出END ADCINT;ARCHITECTURE behav OF ADCINT ISTYPE states IS(st0,st1,st2,st3,st4);-定义各状态子类型 SIGNAL current_state,next_state:states:=st0;SIGNAL REGL :STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK :STD_LO
10、GIC;-转换后数据输出锁存时钟信号 BEGINADDA=1;-当ADDA=0,模拟信号进入通道IN0;当ADDA=1,则进入通道IN1Q=REGL;LOCK0 ALE=0;START=0;LOCK=0;OE=0;next_state ALE=1;START=1;LOCK=0;OE=0;next_state ALE=0;START=0;LOCK=0;OE=0;IF(EOC=1)THEN next_state=st3;-EOC=1表明转换结束 ELSE next_state ALE=0;START=0;LOCK=0;OE=1;next_state ALE=0;START=0;LOCK=1;OE=
11、1;next_state next_state=st0;END CASE;END PROCESS COM;REG:PROCESS(CLK)BEGIN IF(CLKEVENT AND CLK=1)THEN current_state=next_state;END IF;END PROCESS REG;-由信号current_state将当前状态值带出此进程:REG LATCH1:PROCESS(LOCK)-此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL next_state next_state IF(EOC=1)
12、THEN next_state=st3;ELSE next_state next_state next_state next_state ALE=0;START=0;LOCK=0;OEALE=1;START=1;LOCK=0;OEALE=0;START=0;LOCK=0;OEALE=0;START=0;LOCK=0;OEALE=0;START=0;LOCK=1;OE ALE=0;START=0;LOCK=0;END CASE;END PROCESS COM2;第16页/共62页5.2 Moore5.2 Moore状态机状态机 5.2.2 5.2.2 单进程单进程MooreMoore状态机状态机
13、 【例5-4】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 IS PORT(DATAIN :IN STD_LOGIC_VECTOR(1 DOWNTO 0);CLK,RST:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END MOORE1;ARCHITECTURE behav OF MOORE1 IS TYPE ST_TYPE IS(ST0,ST1,ST2,ST3,ST4);SIGNAL C_ST:ST_TYPE;BEGIN PROCESS(CLK,RST)BEGIN IF RST
14、=1 THEN C_ST=ST0;Q IF DATAIN=10 THEN C_ST=ST1;ELSE C_ST=ST0;END IF;Q IF DATAIN=11 THEN C_ST=ST2;ELSE C_ST=ST1;END IF;Q IF DATAIN=01 THEN C_ST=ST3;ELSE C_ST=ST0;END IF;Q IF DATAIN=00 THEN C_ST=ST4;ELSE C_ST=ST2;END IF;Q IF DATAIN=11 THEN C_ST=ST0;ELSE C_ST=ST3;END IF;Q C_ST=ST0;END CASE;END IF;END PR
15、OCESS;END behav;第18页/共62页5.2 Moore5.2 Moore状态机状态机 5.2.2 5.2.2 单进程单进程MooreMoore状态机状态机 图5-7 例5-4状态机综合后的部分主要RTL电路模块(Synplify综合)第19页/共62页5.2 Moore5.2 Moore状态机状态机 5.2.2 5.2.2 单进程单进程MooreMoore状态机状态机 图5-8 例5-4单进程状态机工作时序 第20页/共62页5.2 Moore5.2 Moore状态机状态机 5.2.2 5.2.2 单进程单进程MooreMoore状态机状态机 图5-9 对应于例5-4的二进程状态
16、机工作时序图 第21页/共62页5.3 Mealy5.3 Mealy状态机状态机 【例5-5】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT(CLK,DATAIN,RESET :IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY1;ARCHITECTURE behav OF MEALY1 IS TYPE states IS(st0,st1,st2,st3,st4);SIGNAL STX:states ;BEGIN COMREG:PROCESS(CLK,RE
17、SET)BEGIN-决定转换状态的进程 IF RESET=1 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAIN=1 THEN STX STX IF DATAIN=1 THEN Q=10000;ELSE Q IF DATAIN=0 THEN Q=10111;ELSE Q IF DATAIN=1 THEN Q=10101;ELSE Q IF DATAIN=0 THEN Q=11011;ELSE Q IF DATAIN=1 THEN Q=1110
18、1;ELSE Q Q=00000;END CASE;END PROCESS COM1;END behav;第23页/共62页5.3 Mealy5.3 Mealy状态机状态机 【例5-6】LIBRARY IEEE;-MEALY FSMUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY2 IS PORT(CLK,DATAIN,RESET :IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY2;ARCHITECTURE behav OF MEALY2 IS TYPE states IS(st0,st1,st
19、2,st3,st4);SIGNAL STX:states ;SIGNAL Q1:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN COMREG:PROCESS(CLK,RESET)-决定转换状态的进程 BEGIN IF RESET=1 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAIN=1 THEN STX IF DATAIN=0 THEN STX IF DATAIN=1 THEN STX STX IF DATAIN=1 THEN Q2:=10000;ELSE Q2:=01010;END IF;WHEN
20、st1=IF DATAIN=0 THEN Q2:=10111;ELSE Q2:=10100;END IF;WHEN st2=IF DATAIN=1 THEN Q2:=10101;ELSE Q2:=10011;END IF;WHEN st3=IF DATAIN=0 THEN Q2:=11011;ELSE Q2:=01001;END IF;WHEN st4=IF DATAIN=1 THEN Q2:=11101;ELSE Q2:=01101;END IF;WHEN OTHERS=Q2:=00000;END CASE;IF CLKEVENT AND CLK=1 THEN Q1=Q2;END IF;EN
21、D PROCESS COM1;Q=Q1;END behav;第25页/共62页5.3 Mealy5.3 Mealy状态机状态机 图5-10 例5-5状态机工作时序图 第26页/共62页5.3 Mealy5.3 Mealy状态机状态机 图5-11 例5-6状态机工作时序图 第27页/共62页5.4 5.4 状态编码状态编码 表5-1 控制信号状态编码表 5.4.1 5.4.1 直接输出型编码直接输出型编码 状态 状 态 编 码STARTALEOELOCKB功 能 说 明ST0 00000初始态ST111000启动转换ST200001若测得EOC=1时,转下一状态ST3ST300100输出转换好的
22、数据ST400110利用LOCK的上升沿将转换好的数据锁存第28页/共62页5.4 5.4 状态编码状态编码 5.4.1 5.4.1 直接输出型编码直接输出型编码 【例5-7】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS.PORT(D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK,EOC:IN STD_LOGIC;ALE,START,OE,ADDA :OUT STD_LOGIC;c_state :OUT STD_LOGIC_VECTOR(4 DOWNTO 0);Q :OUT STD_LOGIC_V
23、ECTOR(7 DOWNTO 0);END AD0809;ARCHITECTURE behav OF AD0809 ISSIGNAL current_state,next_state:STD_LOGIC_VECTOR(4 DOWNTO 0);CONSTANT st0:STD_LOGIC_VECTOR(4 DOWNTO 0):=00000;CONSTANT st1:STD_LOGIC_VECTOR(4 DOWNTO 0):=11000;CONSTANT st2:STD_LOGIC_VECTOR(4 DOWNTO 0):=00001;CONSTANT st3:STD_LOGIC_VECTOR(4
24、DOWNTO 0):=00100;CONSTANT st4:STD_LOGIC_VECTOR(4 DOWNTO 0):=00110;SIGNAL REGL :STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK :STD_LOGIC;BEGIN ADDA=1;Q=REGL;START=current_state(4);ALE=current_state(3);OE=current_state(2);LOCK=current_state(1);c_state next_state next_state IF(EOC=1)THEN next_state=st3;-EOC
25、=1表明转换结束 ELSE next_state next_state next_state next_state=st0;END CASE;END PROCESS COM;REG:PROCESS(CLK)BEGIN IF(CLKEVENT AND CLK=1)THEN current_state=next_state;END IF;END PROCESS REG;-由信号current_state将当前状态值带出此进程:REG LATCH1:PROCESS(LOCK)-此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN RE
26、GL next_state next_state next_state=st0;END case;第36页/共62页5.5 5.5 非法状态处理非法状态处理 【例5-10】.alarm=(st0 AND(st1 OR st2 OR st3 OR st4 OR st5)OR (st1 AND(st0 OR st2 OR st3 OR st4 OR st5)OR (st2 AND(st0 OR st1 OR st3 OR st4 OR st5)OR (st3 AND(st0 OR st1 OR st2 OR st4 OR st5)OR (st4 AND(st0 OR st1 OR st2 OR s
27、t3 OR st5)OR (st5 AND(st0 OR st1 OR st2 OR st3 OR st4);第37页/共62页习习习习 题题题题 5-1.仿照例5-1,将例5-4用两个进程,即一个时序进程,一个组合进程表达出来。5-2.为确保例5-5的状态机输出信号没有毛刺,试用例5-4的方式构成一个单进程状态,使输出信号得到可靠锁存,在相同输入信号条件下,给出两程序的仿真波形。5-3.序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,
28、这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例5-11描述的电路完成对序列数“11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。第38页/共62页习习 题题 【例5-11】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN,CLK,CLR :IN STD_LOGIC;-串行输入数据位/工作时钟/复位信号 AB:OUT
29、 STD_LOGIC_VECTOR(3 DOWNTO 0);-检测结果输出END SCHK;ARCHITECTURE behav OF SCHK IS SIGNAL Q:INTEGER RANGE 0 TO 8;SIGNAL D:STD_LOGIC_VECTOR(7 DOWNTO 0);-8位待检测预置数(密码=E5H)BEGIN D=11100101 ;-8位待检测预置数 PROCESS(CLK,CLR)BEGIN IF 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
30、;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=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)-检测结果判断输出 BEGIN IF Q=8 THEN AB=1010;-序列数检测正确,输出“A”ELSE AB=1011;-序列数检测错误,输出“B”END IF;END PROCESS;END behav;第39页/共62页
31、习习习习 题题题题 要求1:说明例5-11的代码表达的是什么类型的状态机,它的优点是什么?详述其功能和对序列数检测的逻辑过程。要求2:根据例5-11写出由两个主控进程构成的相同功能的符号化Moore型有限状态机,画出状态图,并给出其仿真测试波形。要求3:将8位待检测预置数作为外部输入信号,即可以随时改变序列检测器中的比较数据。写出此程序的符号化单进程有限状态机。提示:对于D=“11100101”,电路需分别不间断记忆:初始状态、1、11、111、1110、11100、111001、1110010、11100101 共9种状态。第40页/共62页习习习习 题题题题 5-4.根据图5-14(a)所
32、示的状态图,分别按照图5-14(b)和图5-14(c)写出对应结构的VHDL状态机。图5-14 习题5-4状态图 第41页/共62页习习习习 题题题题 5-5.在不改变原代码功能的条件下用两种方法改写例5-2,使其输出的控制信号(ALE、START、OE、LOCK)没有毛刺。方法1:将输出信号锁存后输出;方法2:使用状态码直接输出型状态机,并比较这三种状态机的特点。第42页/共62页实实实实 验验验验 与与与与 设设设设 计计计计 实验实验5-1.5-1.序列检测器设计序列检测器设计 实验5-2.5-2.ADC0809 ADC0809采样控制电路实现 实验5-3.5-3.数据采集电路和简易存储
33、示波器设计 第43页/共62页实实实实 验验验验 与与与与 设设设设 计计计计 图5-15 ADC0809采样电路系统:RSV.bdf 第44页/共62页实实实实 验验验验 与与与与 设设设设 计计计计 【例5-12】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10B IS PORT(LOCK0,CLR:IN STD_LOGIC;CLK:IN STD_LOGIC;WE:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(8 DOWNTO 0);CL
34、KOUT:OUT STD_LOGIC);END CNT10B;ARCHITECTURE behav OF CNT10B IS SIGNAL CQI :STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL CLK0:STD_LOGIC;BEGINCLK0=LOCK0 WHEN WE=1 ELSE CLK;PROCESS(CLK0,CLR,CQI)BEGIN IF CLR=1 THEN CQI=000000000;ELSIF CLK0EVENT AND CLK0=1 THEN CQI=CQI+1;END IF;END PROCESS;DOUT=CQI;CLKOUT=CLK0;EN
35、D behav;第45页/共62页实实实实 验验验验 与与与与 设设设设 计计计计 实验5-4.比较器和D/A器件实现A/D转换功能的电路设计【例5-13】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DAC2ADC IS PORT(CLK :IN STD_LOGIC;-计数器时钟 LM311 :IN STD_LOGIC;-LM311输出,由PIO37口进入FPGA CLR :IN STD_LOGIC;-计数器复位 DD :OUT STD_LOGIC_VECTOR(7 DOWNTO
36、 0);-输向0832的数据 DISPDATA:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-转换数据显示END;ARCHITECTURE DACC OF DAC2ADC IS SIGNAL CQI :STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN DD=CQI;PROCESS(CLK,CLR,LM311)BEGIN IF CLR=1 THEN CQI=00000000;ELSIF CLKEVENT AND CLK=1 THEN IF LM311=1 THEN CQI=CQI+1;END IF;-如果是高电平,继续搜索 END IF;-如果出现低电平
37、,即可停止搜索,保存计数值于CQI中 END PROCESS;DISPDATA BT=00000001;A BT=00000010;A BT=00000100;A BT=00001000;A BT=00010000;A BT=00100000;A BT=01000000;A BT=10000000;A NULL;END CASE;END PROCESS P1;接下页K KX康芯科技第54页/共62页P2:PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN CNT8 SG SG SG SG SG SG SG SG SG SG SG SG SG SG SG S
38、G NULL;END CASE;END PROCESS P3;END;K KX康芯科技第55页/共62页实实 验验 与与 设设 计计 (3)实验内容1:说明例5-19中各语句的含义,以及该例的整体功能。对该例进行编辑、编译、综合、适配、仿真,给出仿真波形。实验方式:若考虑小数点,SG的8个段分别与PIO49、PIO48、PIO42(高位在左)、BT的8个位分别与PIO34、PIO35、PIO41(高位在左);电路模式不限,引脚图参考附录图10。将GW48EDA系统左下方的拨码开关全部向上拨,这时实验系统的8个数码管构成图5-20的电路结构,时钟CLK可选择clock0,通过跳线选择16384H
39、z信号。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。(4)实验内容2:修改例5-19的进程P1中的显示数据直接给出的方式,增加8个4位锁存器,作为显示数据缓冲器,使得所有8个显示数据都必须来自缓冲器。缓冲器中的数据可以通过不同方式锁入,如来自A/D采样的数据、来自分时锁入的数据、来自串行方式输入的数据,或来自单片机等。第56页/共62页实实 验验 与与 设设 计计 5-3.数控分频器的设计数控分频器的设计(1)实验目的:学习数控分频器的设计、分析和测试方法。(2)实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频
40、器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例5-20所示。(3)分析:根据图5-21的波形提示,分析例5-20中的各语句功能、设计原理及逻辑功能,详述进程P_REG和P_DIV的作用,并画出该程序的RTL电路图。图5-21 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)第57页/共62页实实 验验 与与 设设 计计 (4)仿真:输入不同的CLK频率和预置值D,给出如图5-21的时序波形。(5)实验内容1:在实验系统上硬件验证例5-20的功能。可选实验电路模式1(参考附录图3);键2/键1负责输入8位预置数D
41、(PIO7-PIO0);CLK由clock0输入,频率选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。(6)实验内容2:将例5-20扩展成16位分频器,并提出此项设计的实用示例,如PWM的设计等。(7)思考题:怎样利用2个例5-20给出的模块设计一个电路,使其输出方波的正负脉宽的宽度分别由可两个8位输入数据控制?(8)实验报告:根据以上的要求,将实验项目分析设计,仿真和测试写入实验报告。第58页/共62页【例5-20】LIBRARY IEEE;USE IEEE.STD_LOGIC_116
42、4.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF IS PORT(CLK :IN STD_LOGIC;D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT:OUT STD_LOGIC );END;ARCHITECTURE one OF DVF IS SIGNAL FULL:STD_LOGIC;BEGIN P_REG:PROCESS(CLK)VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT8=11111111
43、 THEN CNT8:=D;-当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL=1;-同时使溢出标志信号FULL输出为高电平 ELSE CNT8:=CNT8+1;-否则继续作加1计数 FULL=0;-且输出溢出标志信号FULL为低电平 END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)VARIABLE CNT2:STD_LOGIC;接下页K KX康芯科技第59页/共62页BEGIN IF FULLEVENT AND FULL=1 THEN CNT2:=NOT CNT2;-如果溢出标志信号FULL为高电平,D触发器输出取反
44、IF CNT2=1 THEN FOUT=1;ELSE FOUT=0;END IF;END IF;END PROCESS P_DIV;END;K KX康芯科技第60页/共62页实实 验验 与与 设设 计计 BEGIN IF FULLEVENT AND FULL=1 THEN CNT2:=NOT CNT2;-如果溢出标志信号FULL为高电平,D触发器输出取反 IF CNT2=1 THEN FOUT=1;ELSE FOUT=0;END IF;END IF;END PROCESS P_DIV;END;5-4.32位并进位并进/并出移位寄存器设计并出移位寄存器设计 仅用例5-8一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。这个电路模型十分容易用到CPU的设计中。第61页/共62页感谢您的欣赏!第62页/共62页