ImageVerifierCode 换一换
格式:PPT , 页数:105 ,大小:1.25MB ,
资源ID:388629      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-388629.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第7章 有限状态机设计与LPM应用.ppt)为本站会员(李朗)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

第7章 有限状态机设计与LPM应用.ppt

1、第7章 有限状态机设计与LPM应用,EDA技术实用教程,7.1 一般有限状态机的设计,7.1.1 用户自定义数据类型定义语句,TYPE语句用法如下: 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) ;,7.1 一般有限状态机的设计,7.1.1 用户自定义数据类型定义语句,TYPE m_state IS ( st0,st1,s

2、t2,st3,st4,st5 ) ;SIGNAL present_state,next_state : m_state ;,布尔数据类型的定义语句是:TYPE BOOLEAN IS (FALSE,TRUE) ;,TYPE my_logic IS ( 1 ,Z ,U ,0 ) ;SIGNAL s1 : my_logic ;s1 = Z ;,7.1 一般有限状态机的设计,7.1.1 用户自定义数据类型定义语句,子类型SUBTYPE的语句格式如下:SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;,SUBTYPE digits IS INTEGER RANGE 0 to 9 ;,7

3、.1.2 为什么要使用状态机,7.1 一般有限状态机的设计, 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。, 状态机的结构模式相对简单。, 状态机容易构成性能良好的同步时序逻辑模块。, 状态机的VHDL表述丰富多样。, 在高速运算和控制方面,状态机更有其巨大的优势。, 就可靠性而言,状态机的优势也是十分明显的。,7.1.3 一般有限状态机的设计,7.1 一般有限状态机的设计,1. 说明部分,ARCHITECTURE .ISTYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; .,7.1.3 一

4、般有限状态机的设计,7.1 一般有限状态机的设计,2. 主控时序进程,图7-1 一般状态机结构框图工作示意图,3. 主控组合进程,7.1.3 一般有限状态机的设计,控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。,7.1 一般有限状态机的设计,4. 辅助进程,【例7-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENT

5、ITY s_machine ISPORT ( clk,reset : IN STD_LOGIC;state_inputs : IN STD_LOGIC_VECTOR (0 TO 1);comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine; ARCHITECTURE behv OF s_machine ISTYPE FSM_ST IS (s0, s1, s2, s3); SIGNAL current_state, next_state: FSM_ST; BEGINREG: PROCESS (reset,clk) BEGINIF res

6、et = 1 THEN current_state = s0; ELSIF clk=1 AND clkEVENT THEN current_state = next_state; END IF;END PROCESS; COM:PROCESS(current_state, state_Inputs),接下页,BEGINCASE current_state IS WHEN s0 = comb_outputs comb_outputs comb_outputs comb_outputs = 14;IF state_inputs = “11“ THEN next_state = s3; ELSE n

7、ext_state = s0; END IF;END case;END PROCESS; END behv;,接上页,7.1.3 一般有限状态机的设计,7.1 一般有限状态机的设计,4. 辅助进程,图7-2 例7-1状态机的工作时序图,7.2.1 多进程有限状态机,7.2 Moore型有限状态机的设计,图7-3 ADC0809工作时序,7.2.1 多进程有限状态机,7.2 Moore型有限状态机的设计,图7-4 控制ADC0809采样状态图,7.2.1 多进程有限状态机,图7-5 采样状态机结构框图,【例7-2】 LIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD

8、_LOGIC_1164.ALL; ENTITY ADCINT ISPORT (D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK ,EOC : IN STD_LOGIC;ALE, START, OE, ADDA,LOCK0 : OUT STD_LOGIC;Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END ADCINT; ARCHITECTURE behav OF ADCINT IS TYPE states IS (st0, st1, st2, st3,st4) ; -定义各状态子类型SIGNAL current_state, nex

9、t_state: states :=st0 ;SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK : STD_LOGIC; - 转换后数据输出锁存时钟信号BEGINADDA = 1;-当ADDA=0,模拟信号进入0809通道0;当ADDA=1,则进入通道1 Q = REGL; LOCK0 = LOCK ;COM: PROCESS(current_state,EOC) BEGIN -规定各状态转换方式 接下页,7.2.1 三进程有限状态机,CASE current_state IS WHEN st0=ALEALE ALE ALE ALE

10、next_state = st0; END CASE ;END PROCESS COM ;REG: PROCESS (CLK) BEGINIF (CLKEVENT AND CLK=1) THEN current_state=next_state;END IF;END PROCESS REG ; - 由信号current_state将当前状态值带出此进程:REG LATCH1: PROCESS (LOCK) - 此进程中,在LOCK的上升沿,将转换好的数据锁入BEGINIF LOCK=1 AND LOCKEVENT THEN REGL = D ;END IF;END PROCESS LATCH1

11、 ; END behav;,7.2.1 多进程有限状态机,7.2 Moore型有限状态机的设计,图7-6 ADC0809采样状态机工作时序,【例7-3】 COM1: PROCESS(current_state,EOC) BEGIN CASE current_state IS WHEN st0= next_state next_state IF (EOC=1) THEN next_state next_state next_state next_state ALEALEALEALEALE ALE=0;START=0;LOCK=0; END CASE ;END PROCESS COM2 ;,7.2

12、.1 三进程有限状态机,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,【例7-4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MOORE1 ISPORT (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 ISTYPE ST_TYPE IS (ST0, ST1, ST2

13、, ST3,ST4); SIGNAL C_ST : ST_TYPE ;,接上页 BEGIN PROCESS(CLK,RST) BEGIN IF RST =1 THEN C_ST IF DATAIN =“10“ THEN C_ST IF DATAIN =“11“ THEN C_ST IF DATAIN =“01“ THEN C_ST = ST3 ;ELSE C_ST = ST0 ;END IF;Q = “1100“ ;,接上页 WHEN ST3 = IF DATAIN =“00“ THEN C_ST IF DATAIN =“11“ THEN C_ST C_ST = ST0;END CASE;EN

14、D IF;END PROCESS; END behav;,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,图7-7 例7-4状态机综合后的RTL电路模块,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,图7-8 例7-4单进程状态机工作时序,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,图7-9 对应于例7-4的2进程状态机工作时序图,7.3 Mealy型有限状态机的设计,【例7-5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY1

15、 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY1; ARCHITECTURE behav OF MEALY1 ISTYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN -决定转换状态的进程IF RESET =1 THEN STX = ST0;ELSIF CLKEVENT AND CLK = 1 THEN CA

16、SE STX IS,接上页 WHEN st0 = 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 = st0; END CASE ; END IF;END PROCESS COMREG ; COM1: PROCESS(STX,DATAIN) BEGIN -输出控制信号的进程CASE STX IS END behav;,接上页 WHEN st0 = IF DATAIN = 1 THEN Q IF DATAIN

17、 = 0 THEN Q IF DATAIN = 1 THEN Q IF DATAIN = 0 THEN Q IF DATAIN = 1 THEN Q Q=“00000“ ; END CASE ;END PROCESS COM1 ;,【例7-6】 MEALY2 LIBRARY IEEE; -MEALY FSM USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY2 ISPORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY2; ARCHITECT

18、URE behav OF MEALY2 ISTYPE states IS (st0, st1, st2, 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 DAT

19、AIN = 1 THEN STX STX = st0; END CASE ;END IF;END PROCESS COMREG ; COM1: PROCESS(STX,DATAIN,CLK) -输出控制信号的进程VARIABLE Q2 : STD_LOGIC_VECTOR(4 DOWNTO 0);,接上页 BEGINCASE STX IS WHEN st0= IF DATAIN=1 THEN Q2 :=“10000“; ELSE Q2:=“01010“; END IF;WHEN st1= IF DATAIN=0 THEN Q2 :=“10111“; ELSE Q2:=“10100“; END

20、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; END PROCESS COM1

21、 ;Q = Q1 ; END behav;,7.3 Mealy型有限状态机的设计,图7-10 例7-5状态机工作时序图,7.3 Mealy型有限状态机的设计,图7-11 例7-6状态机工作时序图,7.4.1 状态位直接输出型编码,7.4 状态编码,表7-1 控制信号状态编码表,【例7-7】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD0809 ISPORT (D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK ,EOC : IN STD_LOGIC;ALE, START, OE, ADDA : OUT ST

22、D_LOGIC;c_state : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END AD0809; ARCHITECTURE behav OF AD0809 IS SIGNAL 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) :=

23、“11000“ ;CONSTANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0) := “00001“ ;CONSTANT st3 : STD_LOGIC_VECTOR(4 DOWNTO 0) := “00100“ ;,CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0) := “00110“ ;SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK : STD_LOGIC; BEGINADDA next_state next_state IF (EOC=1) THEN next_s

24、tate next_state next_state = st0;,WHEN OTHERS = next_state = st0; END CASE ;END PROCESS COM ;REG: PROCESS (CLK) BEGINIF (CLKEVENT AND CLK=1) THEN current_state=next_state;END IF;END PROCESS REG ; - 由信号current_state将当前状态值带出此进程:REGLATCH1: PROCESS (LOCK) - 此进程中,在LOCK的上升沿,将转换好的数据锁入BEGIN IF LOCK=1 AND LO

25、CKEVENT THEN REGL = D ;END IF;END PROCESS LATCH1 ; END behav;,7.4.1 状态位直接输出型编码,7.4 状态编码,图7-12 例7-7状态机工作时序图,7.4 状态编码,7.4.2 顺序编码,表7-2 编码方式,7.4.2 顺序编码,7.4 状态编码,【例7-8】 . SIGNAL CRURRENT_STATE,NEXT_STATE: STD_LOGIC_VECTOR(2 DOWNTO 0 ); CONSTANT ST0 : STD_LOGIC_VECTOR(2 DOWNTO 0) := “000“ ; CONSTANT ST1 :

26、 STD_LOGIC_VECTOR(2 DOWNTO 0) := “001“ ; CONSTANT ST2 : STD_LOGIC_VECTOR(2 DOWNTO 0) := “010“ ; CONSTANT ST3 : STD_LOGIC_VECTOR(2 DOWNTO 0) := “011“ ; CONSTANT ST4 : STD_LOGIC_VECTOR(2 DOWNTO 0) := “100“ ;.,7.4.3 一位热码编码(One-hot encoding),7.4 状态编码,图7-13 一位热码编码方式选择对话框,7.5 状态机剩余状态处理,表7-3 剩余状态,WHEN st_i

27、lg1 = next_state next_state = st0;,7.5 状态机剩余状态处理,【例7-9】 . TYPE states IS (st0, st1, st2, st3,st4, st_ilg1,st_ilg2 ,st_ilg3); SIGNAL current_state, next_state: states; . COM:PROCESS(current_state, state_Inputs) - 组合逻辑进程 BEGINCASE current_state IS - 确定当前状态的状态值.WHEN OTHERS = next_state = st0; END case;

28、,7.5 状态机剩余状态处理,【例7-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 st3 OR st5) OR(st5 AND (st0 OR st1 OR st2 OR st3 OR st4)

29、 ;,7.6.1 AD采样系统顶层电路设计,7.6 LPM模块的VHDL文本方式调用,图7-14 ADC0809采样电路系统,7.6.2 编辑定制LPM_RAM模块,7.6 LPM模块的VHDL文本方式调用,图7-15 生成或修改一个定制的LPM模块,7.6.2 编辑定制LPM_RAM模块,图7-16 用VHDL定制LPM_RAM,文件名:RAM2.vhd,7.6.2 编辑定制LPM_RAM模块,7.6 LPM模块的VHDL文本方式调用,图7-17 选择FIFO数据位宽为8,深度为512,7.6 LPM模块的VHDL文本方式调用,7.6.2 编辑定制LPM_RAM模块,图7-18 RAM2配置

30、文件与结构设置,7.6 LPM模块的VHDL文本方式调用,7.6.2 编辑定制LPM_RAM模块,图7-19 选择在读请求信号有效后数据输出,7.6.3 双口RAM定制,7.6 LPM模块的VHDL文本方式调用,图7-21 双口RAM的仿真波形,图7-20 双口RAM,7.6.3 双口RAM定制,【例7-11】LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY RAM1 ISPORT(address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); -9位地址输入inclock : IN STD_LOGIC ; -数据写入时钟w

31、e : IN STD_LOGIC ; -写允许信号data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); -8位写入数据 q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); -8位RAM数据输出 END RAM1; ARCHITECTURE SYN OF RAM1 ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT lpm_ram_dq -LPM元件GENERIC (lpm_width : NATURAL; -类属 RAM数据宽度 自然数数据类型,接上页lpm_widtha

32、d : NATURAL; -类属 RAM地址线位宽 自然数数据类型lpm_indata,lpm_address_control,lpm_outdata,lpm_hint : STRING); PORT (address : IN STD_LOGIC_VECTOR (8 DOWNTO 0);we,inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);data : IN STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT; BEGINq 8, - 8位数据宽度 自然数数据类型LPM_WID

33、THAD = 9, - 9位地址线宽度 自然数数据类型LPM_INDATA = “REGISTERED“,-寄存器锁存方式写入数据,字符串数据类型LPM_ADDRESS_CONTROL = “REGISTERED“,-寄存器锁存方式写入地址,字符串数据类型,接上页LPM_OUTDATA = “UNREGISTERED“,-非寄存器锁存方式输出数据LPM_HINT = “USE_EAB=ON“ ) -允许使用FPGA中的EABPORT MAP (address = address,inclock = inclock,data = data, we = we,q = sub_wire0); END

34、 SYN;,7.6.4 正弦信号发生器设计与LPM ROM定制,7.6 LPM模块的VHDL文本方式调用,图7-22 波形发生器电路系统结构图,1. 正弦信号发生器结构,2. 正弦信号波形数据文件建立,【例7-12】LPM_ROM中作为正弦波形数据文件sindata.mif WIDTH = 8 ; DEPTH = 64 ; ADDRESS_RADIX = HEX ; DATA_RADIX = DEC ; CONTENT BEGIN00:255 ; 01:254 ; 02:252 ; 03:249 ; 04:245 ; 05:239 ; 06:233 ; 07:225 ;08:217 ; 09:

35、207 ; 0A:197 ; 0B:186 ; 0C:174 ; 0D:162 ; 0E:150 ; 0F:137 ;10:124 ; 11:112 ; 12: 99 ; 13: 87 ; 14: 75 ; 15: 64 ; 16: 53 ; 17: 43 ;18: 34 ; 19: 26 ; 1A: 19 ; 1B: 13 ; 1C: 8 ; 1D: 4 ; 1E: 1 ; 1F: 0 ;20: 0 ; 21: 1 ; 22: 4 ; 23: 8 ; 24: 13 ; 25: 19 ; 26: 26 ; 27: 34 ;28: 43 ; 29: 53 ; 2A: 64 ; 2B: 75 ;

36、2C: 87 ; 2D: 99 ; 2E:112 ; 2F:124 ;30:137 ; 31:150 ; 32:162 ; 33:174 ; 34:186 ; 35:197 ; 36:207 ; 37:217 ;38:225 ; 39:233 ; 3A:239 ; 3B:245 ; 3C:249 ; 3D:252 ; 3E:254 ; 3F:255 ;END ;,7.6.4 正弦信号发生器设计与LPM ROM定制,图7-23 定制LPM ROM文件,3. LPM ROM定制,7.6.4 正弦信号发生器设计与LPM ROM定制,图7-24 选择ROM参数,3. LPM ROM定制,7.6 LPM

37、模块的VHDL文本方式调用,7.6.4 正弦信号发生器设计与LPM ROM定制,图7-25加入初始化文件,3. LPM ROM定制,7.6 LPM模块的VHDL文本方式调用,7.6.4 正弦信号发生器设计与LPM ROM定制,图7-26 例7-13仿真波形,3. LPM ROM定制,7.6 LPM模块的VHDL文本方式调用,3. LPM ROM定制,【例7-13】 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY SINDATA ISPORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);inclock

38、: IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); END SINDATA; ARCHITECTURE SYN OF SINDATA ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT lpm_romGENERIC (lpm_width : NATURAL;lpm_widthad : NATURAL;lpm_address_control : STRING;,接上页 lpm_outdata : STRING;lpm_file : STRING );PORT ( add

39、ress : IN STD_LOGIC_VECTOR (5 DOWNTO 0);inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT; BEGINq 8,LPM_WIDTHAD = 6,LPM_ADDRESS_CONTROL = “REGISTERED“,LPM_OUTDATA = “UNREGISTERED“,LPM_FILE = “D:/SIN_G/DATA/sin_data.mif“ )PORT MAP (address = address,inclock = inclock,q = s

40、ub_wire0 ); END SYN;,【例7-14】 LIBRARY IEEE; -正弦信号发生器源文件 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SINGT ISPORT ( CLK : IN STD_LOGIC; -信号源时钟DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );-8位波形数据输出 END; ARCHITECTURE DACC OF SINGT IS COMPONENT SINDATA -调用波形数据存储器LPM_ROMATAROM.VHD声明

41、PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END COMPONENT;,4. 完成正弦信号发生器顶层设计和测试,接上页SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0); -设定内部节点作为地址计数器BEGIN PROCESS(CLK ) -LPM_ROM地址发生器进程BEGINIF CLKEVENT AND CLK = 1 THEN Q1Q1, q = DOUT,inclock=

42、CLK);-例化 END;,7.6.5 编辑定制LPM_FIFO模块,图7-28 选择FIFO数据位宽为8,深度为512,7.6 LPM模块的VHDL文本方式调用,7.6.5 编辑定制LPM_FIFO模块,7.6 LPM模块的VHDL文本方式调用,图7-29 7-19 fifo端口设置,7.6.5 编辑定制LPM_FIFO模块,7.6 LPM模块的VHDL文本方式调用,图7-30 选择Area优化方式和EAB构建,7.6.5 编辑定制LPM_FIFO模块,7.6 LPM模块的VHDL文本方式调用,图7-31单击“Finish”后完成fifo2.vhd的定制,7.6.6 LPM_FIFO定制文件

43、的仿真测试,【例7-15】LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fifo2 ISPORT(data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); -输入数据wrreq : IN STD_LOGIC ; -写入请求rdreq : IN STD_LOGIC ; -读出请求clock : IN STD_LOGIC ; -工作时钟 aclr : IN STD_LOGIC ; -异步清0q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); -数据输出 full : OUT STD_LOGIC );

44、 -溢出标志 END fifo2; ARCHITECTURE SYN OF fifo2 ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL sub_wire1 : STD_LOGIC ;,接上页COMPONENT lpm_fifo -调用LPM_FIFO声明GENERIC (lpm_width :NATURAL; -类属 数据宽度 自然数数据类型lpm_numwords :NATURAL; -类属 数据深度 自然数数据类型lpm_widthu :NATURAL; -类属 地址宽度 自然数数据类型lpm_showahead :STR

45、ING; -类属 数据读出方式 字符串数据类型lpm_hint : STRING ); -类属 优化方式 字符串数据类型PORT ( rdreq : IN STD_LOGIC ;aclr : IN STD_LOGIC ;clock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);wrreq : IN STD_LOGIC ;data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);full : OUT STD_LOGIC );END COMPONENT; BEGIN,接上页q 8, -类属映射语句,数据宽度8位LP

46、M_NUMWORDS = 512, -8位字节数512个LPM_WIDTHU = 9, -地址线位宽9位LPM_SHOWAHEAD = “OFF“, -关闭先行数据输出开关- 打开内部EAB,最大速度约束等级为5LPM_HINT = “USE_EAB=ON,MAXIMIZE_SPEED=5“ ) PORT MAP (rdreq = rdreq, aclr = aclr, clock = clock,wrreq = wrreq, data = data, q = sub_wire0,full = sub_wire1 ); END SYN;,7.6 LPM模块的VHDL文本方式调用,7.6.6 L

47、PM_FIFO定制文件的仿真测试,图7-32 例7-15的仿真波形,习 题,7-1 仿照例7-1,将例7-4用两个进程,即一个时序进程,一个组合进程表达出来。 7-2 为确保例7-5的状态机输出信号没有毛刺,试用例7-4的方式构成一个单进程状态,使输出信号得到可靠锁存,在相同输入信号条件下,给出两程序的仿真波形。7-3 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收

48、到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例7-16描述的电路完成对序列数“11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。,【例7-16】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SCHK ISPORT(DIN,CLK,CLR : IN STD_LOGIC; -串行输入数据位/工作时钟/复位信号AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -检测结果输出 END SCHK; ARCHITECTURE behav OF SCHK ISSIGNAL Q : INTEGER RANGE 0 TO 8 ;SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); -8位待检测预置数 BEGIND = “11100101 “ ; -8位待检测预置数PROCESS( CLK, CLR )BEGINIF CLR = 1 THEN Q = 0 ;ELSIF CLKEVENT AND CLK=1 THEN -时钟到来时,判断并处理当前输入的位CASE Q IS,

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1