第7章_有限状态机设计与LPM应用_第1页
第7章_有限状态机设计与LPM应用_第2页
第7章_有限状态机设计与LPM应用_第3页
第7章_有限状态机设计与LPM应用_第4页
第7章_有限状态机设计与LPM应用_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

1、EDAEDA技术技术实用教程实用教程X康芯科技康芯科技7.1 7.1 一般有限状态机的设计一般有限状态机的设计7.1.1 用户自定义数据类型定义语句用户自定义数据类型定义语句TYPETYPE语句用法如下:语句用法如下:TYPE TYPE 数据类型名数据类型名 IS IS 数据类型定义数据类型定义 OF OF 基本数据类型基本数据类型 ; ;或或TYPE TYPE 数据类型名数据类型名 IS IS 数据类型定义数据类型定义 ; ;以下列出了两种不同的定义方式:以下列出了两种不同的定义方式:TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ;TYPE st1 I

2、S ARRAY ( 0 TO 15 ) OF STD_LOGIC ;TYPE week IS (sunTYPE week IS (sun,monmon,tuetue,wedwed,thuthu,frifri,sat) ;sat) ;X康芯科技康芯科技7.1 7.1 一般有限状态机的设计一般有限状态机的设计7.1.1 用户自定义数据类型定义语句用户自定义数据类型定义语句TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ;布尔数据类型的定义语句是:布尔数据类型的定义语句是:

3、 TYPE BOOLEAN IS TYPE BOOLEAN IS (FALSEFALSE,TRUETRUE) ;TYPE my_logic IS ( 1 TYPE my_logic IS ( 1 ,Z Z ,U U ,0 ) ;0 ) ; SIGNAL s1 : my_logic ; SIGNAL s1 : my_logic ; s1 = Z ; s1 = Z ; X康芯科技康芯科技7.1 7.1 一般有限状态机的设计一般有限状态机的设计7.1.1 用户自定义数据类型定义语句用户自定义数据类型定义语句子类型子类型SUBTYPE的语句格式如下:的语句格式如下:SUBTYPE SUBTYPE 子类

4、型名子类型名 IS IS 基本数据类型基本数据类型 RANGE RANGE 约束范围约束范围; ; SUBTYPE digits IS INTEGER RANGE 0 to 9 ;SUBTYPE digits IS INTEGER RANGE 0 to 9 ;X康芯科技康芯科技7.1.2 为什么要使用状态机为什么要使用状态机7.1 7.1 一般有限状态机的设计一般有限状态机的设计 有限状态机克服了纯硬件数字系统顺序方式控制不灵活有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。的缺点。 状态机的结构模式相对简单状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块状态机容易

5、构成性能良好的同步时序逻辑模块。 状态机的状态机的VHDLVHDL表述丰富多样表述丰富多样。 在高速运算和控制方面,状态机更有其巨大的优势在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的就可靠性而言,状态机的优势也是十分明显的。X康芯科技康芯科技7.1.3 一般有限状态机的设计一般有限状态机的设计7.1 7.1 一般有限状态机的设计一般有限状态机的设计1. 1. 说明部分说明部分ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); S I G N A L c u r r e n t _ s t a t e , ne

6、xt_state: FSM_ST; . X康芯科技康芯科技7.1.3 一般有限状态机的设计一般有限状态机的设计7.1 7.1 一般有限状态机的设计一般有限状态机的设计2. 2. 主控时序进程主控时序进程comb_outputsstate_inputsresetclkFSM:s_machineCOMnext_statecurrent_statePROCESSREGPROCESS图图7-1 一般状态机结构框图工作示意图一般状态机结构框图工作示意图X康芯科技康芯科技3. 3. 主控组合进程主控组合进程7.1.3 一般有限状态机的设计一般有限状态机的设计 控组合进程的任务是根据外部输入的控制信号(包控

7、组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(值确定下一状态(next_statenext_state)的取向,即的取向,即next_statenext_state的取值内容,以及确定对外输出或对内部其它组合或时的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。序进程输出控制信号的内容。7.1 7.1 一般有限状态机的设计一般有限状态机的设计X康芯科技康芯科技4. 4.

8、 辅助进程辅助进程【例【例7-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 : OUT 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

9、, 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 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

10、= 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 PROCESS; END behv;接上页接上页X康芯科技康芯科技7.1.3 一般有限状态机的设计一般有限状态机的设计7.1 7.1 一般有限状态机的设计一般有限状态机的设计4. 4. 辅助进程辅助进程图图7-2 例例7-1状态机的工作时序图状态机的工作时序

11、图 1.0s 1.5s 2.0s 2.5s 3.0s 3.5s 4.0s X康芯科技康芯科技7.2.1 多进程有限状态机多进程有限状态机 7.2 7.2 MooreMoore型有限状态机的设计型有限状态机的设计 图图7-3 ADC0809工作时序工作时序 X康芯科技康芯科技7.2.1 多进程有限状态机多进程有限状态机 7.2 7.2 MooreMoore型有限状态机的设计型有限状态机的设计 图图7-4 控制控制ADC0809采样状态图采样状态图 X康芯科技康芯科技7.2.1 多进程有限状态机多进程有限状态机 图图7-5 采样状态机结构框图采样状态机结构框图 X康芯科技康芯科技【例【例7-2】L

12、IBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT (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 ISTYPE states IS (st0, st1, st2, st3,st4)

13、 ; -定义各状态子类型定义各状态子类型 SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; - 转换后数据输出锁存时钟信号转换后数据输出锁存时钟信号 BEGIN ADDA = 1;-当当ADDA=0,模拟信号进入模拟信号进入0809通道通道0;当;当ADDA=1,则则进入通道进入通道1Q = REGL; LOCK0 ALE=0;START=0;LOCK=0;OE=0; next_state ALE=1;STAR

14、T=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=1; next_state next_state = st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN

15、current_state=next_state; END IF; END PROCESS REG ; - 由信号由信号current_state将当前状态值带出此进程将当前状态值带出此进程:REGLATCH1: PROCESS (LOCK) - 此进程中,在此进程中,在LOCK的上升沿,将转换好的数据锁入的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL next_state next_state IF (EOC=1) THEN next_state = st3; ELSE next_state next_state next_sta

16、te 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 ; 7.2.1 三进程有限状态机三进程有限状态机X康芯科技康芯科技7.2.2 单进程单进程Moore型有限状态机型有限状态机 7.2 7.2 MooreMoore型有限状态机的设计型有限状态机的设计 【例【例7-4】LIBRARY IEEE

17、;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 ; X康芯科技康芯科技接上页接上页BEGIN PROCESS(CLK,RST)

18、 BEGIN IF RST =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 =

19、ST0 ; ELSE C_ST = ST3 ;END IF; Q C_ST = ST0; END CASE; END IF; END PROCESS;END behav;X康芯科技康芯科技7.2.2 单进程单进程Moore型有限状态机型有限状态机 7.2 7.2 MooreMoore型有限状态机的设计型有限状态机的设计 图图7-7 例例7-4状态机综合后的状态机综合后的RTL电路模块电路模块 X康芯科技康芯科技7.2.2 单进程单进程Moore型有限状态机型有限状态机 7.2 7.2 MooreMoore型有限状态机的设计型有限状态机的设计 图图7-8 例例7-4单进程状态机工作时序单进程状态

20、机工作时序 1.0s 2.0s 3.0s 4.0s 5.0s 6.0s 7.0s 8.0s X康芯科技康芯科技7.2.2 单进程单进程Moore型有限状态机型有限状态机 7.2 7.2 MooreMoore型有限状态机的设计型有限状态机的设计 图图7-9 对应于例对应于例7-4的的2进程状态机工作时序图进程状态机工作时序图 X康芯科技康芯科技7.3 7.3 MealyMealy型有限状态机的设计型有限状态机的设计 【例【例7-5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT ( CLK ,DATAIN,RESET

21、 : 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,RESET) BEGIN -决定转换状态的进程决定转换状态的进程 IF RESET =1 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1

22、 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 = 11101 ; ELSE Q Q=00000 ; END CASE ; END PROCESS COM1 ;X康芯科技康芯科技【例

23、【例7-6】 MEALY2 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, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 DO

24、WNTO 0); BEGIN COMREG : PROCESS(CLK,RESET) -决定转换状态的进程决定转换状态的进程 X康芯科技康芯科技接上页接上页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 st1= IF DATAIN=0 T

25、HEN 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

26、; END IF; END PROCESS COM1 ; Q = Q1 ;END behav; X康芯科技康芯科技7.3 7.3 MealyMealy型有限状态机的设计型有限状态机的设计 1.5s 2.0s 2.5s 3.0s 3.5s 4.0s 4.5s 图图7-10 例例7-5状态机工作时序图状态机工作时序图 X康芯科技康芯科技7.3 7.3 MealyMealy型有限状态机的设计型有限状态机的设计 1.5s 2.0s 2.5s 3.0s 3.5s 4.0s 4.5s 图图7-11 例例7-6状态机工作时序图状态机工作时序图 X康芯科技康芯科技7.4.1 状态位直接输出型编码状态位直接输出

27、型编码 7.4 7.4 状态编码状态编码 表表7-1 控制信号状态编码表控制信号状态编码表 状态状态 状状 态态 编编 码码STARTALEOEL O CKB功功 能能 说说 明明 ST0 00000初始态初始态ST111000启动转换启动转换ST200001若测得若测得EOC=1时,转下一状态时,转下一状态ST3ST300100输出转换好的数据输出转换好的数据ST400110利用利用LOCK的上升沿将转换好的数据锁的上升沿将转换好的数据锁存存X康芯科技康芯科技【例【例7-7】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS P

28、ORT (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_VECTOR(7 DOWNTO 0);END AD0809;ARCHITECTURE behav OF AD0809 ISSIGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0 ); CONSTAN

29、T 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 DOWNTO 0) := 00100 ; X康芯科技康芯科技 CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00110 ; SIGNAL REGL : STD_LOGI

30、C_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=1表明转换结束表明转换结束 ELSE next_state next_state next_state next_state = st0;

31、 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_s

32、tate next_state next_state = st0; END case; X康芯科技康芯科技7.5 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 s

33、t1 OR st2 OR st3 OR st5) OR (st5 AND (st0 OR st1 OR st2 OR st3 OR st4) ; X康芯科技康芯科技7.6.1 7.6.1 ADAD采样系统顶层电路设计采样系统顶层电路设计 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 图图7-14 ADC0809采样电路系统采样电路系统 X康芯科技康芯科技7.6.2 7.6.2 编辑定制编辑定制LPM_RAMLPM_RAM模块模块 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 图图7-15 生成或修改一个定制的生成或修改一个

34、定制的LPM模块模块 X康芯科技康芯科技7.6.2 7.6.2 编辑定制编辑定制LPM_RAMLPM_RAM模块模块 图图7-16 用用VHDL定制定制LPM_RAM,文件名:文件名:RAM2.vhd X康芯科技康芯科技7.6.2 7.6.2 编辑定制编辑定制LPM_RAMLPM_RAM模块模块 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 图图7-17 选择选择FIFO数据位宽为数据位宽为8,深度为,深度为512 X康芯科技康芯科技7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 7.6.2 7.6.2 编辑定制编辑定制LP

35、M_RAMLPM_RAM模块模块 图图7-18 RAM2配置文件与结构设置配置文件与结构设置 X康芯科技康芯科技7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 7.6.2 7.6.2 编辑定制编辑定制LPM_RAMLPM_RAM模块模块 图图7-19 选择在读请求信号有效后数据输出选择在读请求信号有效后数据输出 X康芯科技康芯科技7.6.3 7.6.3 双口双口RAMRAM定制定制 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 图图7-21 双口双口RAM的仿真波形的仿真波形 2.0s 4.0s 6.0s 8.0s 10.0

36、s 图图7-20 双口双口RAM X康芯科技康芯科技7.6.3 7.6.3 双口双口RAMRAM定制定制 【例【例7-11】 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY RAM1 IS PORT(address : IN STD_LOGIC_VECTOR (8 DOWNTO 0); -9位地址输入位地址输入 inclock : IN STD_LOGIC ; -数据写入时钟数据写入时钟 we : IN STD_LOGIC ; -写允许信号写允许信号 data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); -8位写入

37、数据位写入数据q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); -8位位RAM数据输出数据输出END RAM1;ARCHITECTURE SYN OF RAM1 IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); COMPONENT lpm_ram_dq -LPM元件元件 GENERIC (lpm_width : NATURAL; -类属类属 RAM数据宽度数据宽度 自然数数据类型自然数数据类型 X康芯科技康芯科技接上页接上页 lpm_widthad : NATURAL; -类属类属 RAM地址线位宽地址线位宽

38、自然数数据类型自然数数据类型 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;BEGIN q 8, - 8位数据宽度位数据宽度 自然数数据类型自然数数据类型 LPM_WIDT

39、HAD = 9, - 9位地址线宽度位地址线宽度 自然数数据类型自然数数据类型 LPM_INDATA = REGISTERED,-寄存器锁存方式写入数据,字符串数据类型寄存器锁存方式写入数据,字符串数据类型 LPM_ADDRESS_CONTROL = REGISTERED,-寄存器锁存方式写入地址,字符串寄存器锁存方式写入地址,字符串数据类型数据类型 X康芯科技康芯科技接上页接上页 LPM_OUTDATA = UNREGISTERED,-非寄存器锁存方式输出数据非寄存器锁存方式输出数据 LPM_HINT = USE_EAB=ON ) -允许使用允许使用FPGA中的中的EAB PORT MAP

40、(address = address,inclock = inclock, data = data, we = we,q = sub_wire0);END SYN;X康芯科技康芯科技7.6.4 7.6.4 正弦信号发生器设计与正弦信号发生器设计与LPM ROMLPM ROM定制定制 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 图图7-22 波形发生器电路系统结构图波形发生器电路系统结构图 1. 正弦信号发生器结构正弦信号发生器结构 X康芯科技康芯科技2. 正弦信号波形数据文件建立正弦信号波形数据文件建立 【例【例7-12】LPM_ROM中作为正弦波形数据文

41、件中作为正弦波形数据文件sindata.mifWIDTH = 8 ;WIDTH = 8 ;DEPTH = 64 ;DEPTH = 64 ;ADDRESS_RADIX = HEX ;ADDRESS_RADIX = HEX ;DATA_RADIX = DEC ;DATA_RADIX = DEC ;CONTENT BEGINCONTENT BEGIN 00:255 ; 01:254 ; 02:252 ; 03:249 ; 04:245 ; 05:239 ; 06:233 ; 07:225 ; 00:255 ; 01:254 ; 02:252 ; 03:249 ; 04:245 ; 05:239 ;

42、06:233 ; 07:225 ; 08:217 ; 09:207 ; 0A:197 ; 0B:186 ; 0C:174 ; 0D:162 ; 0E:150 ; 0F:137 ; 08:217 ; 09: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 ; 10:124 ; 11:112 ; 12: 99 ; 13: 87 ; 14: 75 ; 15: 64 ; 16: 53 ; 17:

43、 43 ; 18: 34 ; 19: 26 ; 1A: 19 ; 1B: 13 ; 1C: 8 ; 1D: 4 ; 1E: 1 ; 1F: 0 ; 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 ; 20: 0 ; 21: 1 ; 22: 4 ; 23: 8 ; 24: 13 ; 25: 19 ; 26: 26 ; 27: 34 ; 28: 43 ; 29: 53 ; 2A:

44、64 ; 2B: 75 ; 2C: 87 ; 2D: 99 ; 2E:112 ; 2F:124 ; 28: 43 ; 29: 53 ; 2A: 64 ; 2B: 75 ; 2C: 87 ; 2D: 99 ; 2E:112 ; 2F:124 ; 30:137 ; 31:150 ; 32:162 ; 33:174 ; 34:186 ; 35:197 ; 36:207 ; 37:217 ; 30:137 ; 31:150 ; 32:162 ; 33:174 ; 34:186 ; 35:197 ; 36:207 ; 37:217 ; 38:225 ; 39:233 ; 3A:239 ; 3B:245

45、; 3C:249 ; 3D:252 ; 3E:254 ; 3F:255 ; 38:225 ; 39:233 ; 3A:239 ; 3B:245 ; 3C:249 ; 3D:252 ; 3E:254 ; 3F:255 ; END ; X康芯科技康芯科技7.6.4 7.6.4 正弦信号发生器设计与正弦信号发生器设计与LPM ROMLPM ROM定制定制 图图7-23 定制定制LPM ROM文件文件 3. LPM ROM定制定制 X康芯科技康芯科技7.6.4 7.6.4 正弦信号发生器设计与正弦信号发生器设计与LPM ROMLPM ROM定制定制 图图7-24 选择选择ROM参数参数 3. LPM

46、ROM定制定制 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 X康芯科技康芯科技7.6.4 7.6.4 正弦信号发生器设计与正弦信号发生器设计与LPM ROMLPM ROM定制定制 图图7-25加入初始化文件加入初始化文件 3. LPM ROM定制定制 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 X康芯科技康芯科技7.6.4 7.6.4 正弦信号发生器设计与正弦信号发生器设计与LPM ROMLPM ROM定制定制 图图7-26 例例7-13仿真波形仿真波形 3. LPM ROM定制定制 7.6 7.6 LPMLPM模块的

47、模块的VHDLVHDL文本方式调用文本方式调用 X康芯科技康芯科技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 : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END SINDATA;ARCHITECTURE SYN OF SINDATA ISSIGNAL sub_wire0: STD_LOGIC_VECT

48、OR (7 DOWNTO 0);COMPONENT lpm_romGENERIC (lpm_width : NATURAL; lpm_widthad : NATURAL; lpm_address_control : STRING;X康芯科技康芯科技接上页接上页lpm_outdata : STRING; lpm_file : STRING );PORT ( address: IN STD_LOGIC_VECTOR (5 DOWNTO 0);inclock: IN STD_LOGIC ; q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END COMPONENT;BEGI

49、Nq 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 = sub_wire0);END SYN; X康芯科技康芯科技【例【例7-14】LIBRARY IEEE; -正弦信号发生器源文件正弦信号发生器源文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.A

50、LL;ENTITY SINGT IS PORT ( CLK : IN STD_LOGIC; -信号源时钟信号源时钟 DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );-8位波形数据输出位波形数据输出END;ARCHITECTURE DACC OF SINGT ISCOMPONENT SINDATA -调用波形数据存储器调用波形数据存储器LPM_ROMATAROM.VHD声明声明 PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC

51、_VECTOR (7 DOWNTO 0);END COMPONENT;4. 完成正弦信号发生器顶层设计和测试完成正弦信号发生器顶层设计和测试 X康芯科技康芯科技接上页接上页 SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0); -设定内部节点作为地址计数器设定内部节点作为地址计数器 BEGINPROCESS(CLK ) -LPM_ROM地址发生器进程地址发生器进程 BEGIN IF CLKEVENT AND CLK = 1 THEN Q1Q1, q = DOUT,inclock=CLK);-例化例化END; X康芯科技康芯科技7.6.5 7.6.5 编辑定制编辑

52、定制LPM_FIFOLPM_FIFO模块模块 图图7-28 选择选择FIFO数据位宽为数据位宽为8,深度为,深度为512 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 X康芯科技康芯科技7.6.5 7.6.5 编辑定制编辑定制LPM_FIFOLPM_FIFO模块模块 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 图图7-29 7-19 fifo端口设置端口设置 X康芯科技康芯科技7.6.5 7.6.5 编辑定制编辑定制LPM_FIFOLPM_FIFO模块模块 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式

53、调用文本方式调用 图图7-30 选择选择Area优化方式和优化方式和EAB构建构建 X康芯科技康芯科技7.6.5 7.6.5 编辑定制编辑定制LPM_FIFOLPM_FIFO模块模块 7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 图图7-31单击单击“Finish”后完成后完成fifo2.vhd的定制的定制 X康芯科技康芯科技7.6.6 7.6.6 LPM_FIFOLPM_FIFO定制文件的仿真测试定制文件的仿真测试 【例【例7-15】 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY fifo2 IS PO

54、RT(data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); -输入数据输入数据 wrreq : IN STD_LOGIC ; -写入请求写入请求 rdreq : IN STD_LOGIC ; -读出请求读出请求 clock : IN STD_LOGIC ; -工作时钟工作时钟 aclr : IN STD_LOGIC ; -异步清异步清0 q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); -数据输出数据输出 full : OUT STD_LOGIC ); -溢出标志溢出标志END fifo2;ARCHITECTURE SYN OF fifo

55、2 IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL sub_wire1 : STD_LOGIC ; X康芯科技康芯科技接上页接上页 COMPONENT lpm_fifo -调用调用LPM_FIFO声明声明 GENERIC (lpm_width :NATURAL; -类属类属 数据宽度数据宽度 自然数数据类型自然数数据类型 lpm_numwords :NATURAL; -类属类属 数据深度数据深度 自然数数据类型自然数数据类型 lpm_widthu :NATURAL; -类属类属 地址宽度地址宽度 自然数数据类型自然数数据类

56、型 lpm_showahead :STRING; -类属类属 数据读出方式数据读出方式 字符串数据类型字符串数据类型 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 S

57、TD_LOGIC ); END COMPONENT;BEGIN X康芯科技康芯科技接上页接上页 q = sub_wire0(7 DOWNTO 0); full 8, -类属映射语句,数据宽度类属映射语句,数据宽度8位位 LPM_NUMWORDS = 512, -8位字节数位字节数512个个 LPM_WIDTHU = 9, -地址线位宽地址线位宽9位位 LPM_SHOWAHEAD = OFF, -关闭先行数据输出开关关闭先行数据输出开关 - 打开内部打开内部EAB,最大速度约束等级为最大速度约束等级为5 LPM_HINT = USE_EAB=ON,MAXIMIZE_SPEED=5 ) PORT

58、MAP (rdreq = rdreq, aclr = aclr, clock = clock, wrreq = wrreq, data = data, q = sub_wire0, full = sub_wire1 );END SYN;X康芯科技康芯科技7.6 7.6 LPMLPM模块的模块的VHDLVHDL文本方式调用文本方式调用 5.0s 10.0s 15.0s 20.0s 25.0s 7.6.6 7.6.6 LPM_FIFOLPM_FIFO定制文件的仿真测试定制文件的仿真测试 图图7-32 例例7-15的仿真波形的仿真波形 X康芯科技康芯科技习习 题题7-1 仿照例仿照例7-1,将例,将

59、例7-4用两个进程,即一个时序进程,一个组合进程表达用两个进程,即一个时序进程,一个组合进程表达出来。出来。7-2 为确保例为确保例7-5的状态机输出信号没有毛刺,试用例的状态机输出信号没有毛刺,试用例7-4的方式构成一个单的方式构成一个单进程状态,使输出信号得到可靠锁存,在相同输入信号条件下,给出两程序进程状态,使输出信号得到可靠锁存,在相同输入信号条件下,给出两程序的仿真波形。的仿真波形。 7-3 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设当序列检

60、测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出置的码相同,则输出1,否则输出,否则输出0。由于这种检测的关键在于正确码的收到。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例,任何一位不相等都将回到初始状态重新开始检测。例7-16描述的电路完成描述的电路完成对序列数对序列

温馨提示

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

评论

0/150

提交评论