(6) 实验内容4:从设计中去除SignalTap II,要求全程编译后生成用于配置器件EPCS1编程的压缩POF文件,并使用ByteBlasterII,通过AS模式对实验板上的EPCS1进行编程,最后进行验证。
(7) 实验内容4:为此项设计加入一个可用于SignalTap II采样的独立的时钟输入端(采用时钟选择clock0=12MHz,计数器时钟CLK分别选择256Hz、16384Hz、6MHz),并进行实时测试。
(8) 思考题:在例3-22中是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即:
CQ <= CQ + 1?为什么?
(9) 实验报告:将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。
实验三 数控分频器设计
(1) 实验目的:学习数控分频器的设计、分析和测试方法。
(2) 实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例5-20所示。
(3) 分析:根据图5-21的波形提示,分析例5-20中的各语句功能、设计原理及逻辑功能,详述进程P_REG和P_DIV的作用,并画出该程序的RTL电路图。
100.0μs 200.0μs 300.0μs 400.0μs
图5-21 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)
(4) 仿真:输入不同的CLK频率和预置值D,给出如图5-21的时序波形。
(5) 实验内容1:在实验系统上硬件验证例5-20的功能。可选实验电路模式1(参考附录图3);键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。
(6) 实验内容2:将例5-20扩展成16位分频器,并提出此项设计的实用示例,如PWM的设计等。 (7) 思考题:怎样利用2个由例5-20给出的模块设计一个电路,使其输出方波的正负脉宽的宽度分别由两个8位输入数据控制?
(8) 实验报告:根据以上的要求,将实验项目分析设计,仿真和测试写入实验报告。 【例5-20】
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.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 CLK'EVENT AND CLK = '1' THEN IF CNT8 = \
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; BEGIN
IF FULL'EVENT 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;
实验四 正弦信号发生器设计
(1)实验目的:进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。 (2)实验原理:参考本章相关内容。
(3)实验内容1:根据例7-4,在Quartus II上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。最后在实验系统上实测,包括SignalTap II测试、FPGA中ROM的在系统数据读写测试和利用示波器测试。最后完成EPCS1配置器件的编程。
【例7-4】 正弦信号发生器顶层设计
LIBRARY IEEE; --正弦信号发生器源文件 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SINGT IS
PORT ( CLK : IN STD_LOGIC; --信号源时钟
DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );--8位波形数据输出
END;
ARCHITECTURE DACC OF SINGT IS
COMPONENT data_rom --调用波形数据存储器LPM_ROM文件:data_rom.vhd声明 PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);--6位地址信号 inclock : IN STD_LOGIC ;--地址锁存时钟
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );
END COMPONENT;
SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0); --设定内部节点作为地址计数器 BEGIN
PROCESS(CLK ) --LPM_ROM地址发生器进程 BEGIN
IF CLK'EVENT AND CLK = '1' THEN Q1<=Q1+1; --Q1作为地址发生器计数器
END IF; END PROCESS;
u1 : data_rom PORT MAP(address=>Q1, q => DOUT,inclock=>CLK);--例化 END;
信号输出的D/A使用实验系统上的DAC0832,注意其转换速率是1μs,其引脚功能简述如下:
ILE:数据锁存允许信号,高电平有效,系统板上已直接连在+5V上;WR1、WR2:写信号1、2,低电平有效;XFER:数据传送控制信号,低电平有效;VREF:基准电压,可正可负,-10V~+10V;RFB:反馈电阻端;IOUT1/IOUT2:电流输出端。D/A转换量是以电流形式输出的,所以必须将电流信号变为电压信号;AGND/DGND:模拟地与数字地。在高速情况下,此二地的连接线必须尽可能短,且系统的单点接地点须接在此连线的某一点上。
建议选择GW48系统的电路模式No.5,由附录对应的电路图可见,DAC0832的8位数据口D[7..0]分别与FPGA的PIO31、30..、24相连,如果目标器件是EP1C3T144,则对应的引脚是:72、71、70、69、68、67、52、51;时钟CLK接系统的clock0,对应的引脚是93,选择的时钟频率不能太高(转换速率1μs,)。还应该注意,DAC0832
电路须接有+/-12V电压:GW48系统的+/-12V电源开关在系统左侧上方。然后下载SINGT.sof到FPGA中;波形输出在系统左下角,将示波器的地与GW48系统的地(GND)相接,信号端与“AOUT”信号输出端相接。如果希望对输出信号进行滤波,将GW48系统左下角的拨码开关的“8”向下拨,则波形滤波输出,向上拨则未滤波输出,这可从输出的波形看出。
基本步骤如下(详细步骤可参考该书第4章): 一、顶层文件设计
1 创建工程和编辑设计文件
正弦信号发生器的结构由3部分组成(图3-1):数据计数器或地址发生器、数据ROM和D/A。性能良好的正弦信号发生器的设计要求此3部分具有高速性能,且数据ROM在高速条件下,占用最少的逻辑资源,设计流程最便捷,波形数据获最方便。图3-1所示是此信号发生器结构图,顶层文件SINGT.VHD在FPGA中实现,包含2个部分:ROM的地址信号发生器由5位计数器担任,和正弦数据ROM,拒此,ROM由LPM_ROM模块构成能达到最优设计,LPM_ROM底层是FPGA中的EAB或ESB等。地址发生器的时钟CLK的输入频率f0与每周期的波形数据点数(在此选择64点),以及D/A输出的频率f的关系是: f = f0 /64
图3-1 正弦信号发生器结构图
2 创建工程 3 编译前设置
在对工程进行编译处理前,必须作好必要的设置。具体步骤如下:1、选择目标芯片;2、选择目标器件编程配置方式;3、选择输出配置;
4 编译及了解编译结果
5、正弦信号数据ROM定制(包括设计ROM初始化数据文件)
另两种方法要快捷的多,可分别用C程序生成同样格式的初始化文件和使用DSP Builder/MATLAB来生成。
6 仿真 7 引脚锁定、下载和硬件测试 8 使用嵌入式逻辑分析仪进行实时测试
图3-33 SignalTapII数据窗的实时信号
9 对配置器件EPCS4/EPCS1编程 10 了解此工程的RTL电路图
图3-35 工程singt的RTL电路图
实验内容2:修改例7-3的数据ROM文件,设其数据线宽度为8,地址线宽度也为8,初始化数据文件使用MIF格式,用C程序产生正弦信号数据,最后完成以上相同的实验。
实验内容3:设计一任意波形信号发生器,可以使用LPM双口RAM担任波形数据存储器,利用单片机产生所需要的波形数据,然后输向FPGA中的RAM(可以利用GW48系统上与FPGA接口的单片机完成此实验,D/A可利用系统上配置的0832或5651高速器件)。
实验报告:根据以上的实验内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。
实验五 序列检测器设计
(1)实验目的:用状态机实现序列检测器的设计,了解一般状态机的设计与应用。
(2)实验原理:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例8-11描述的电路完成对序列数“11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。
(3)实验内容1:利用QuartusII对例8-11进行文本编辑输入、仿真测试并给出仿真波形,了解控制信号的时序,最后进行引脚锁定并完成硬件测试实验。建议选择电路模式No.8(附录图10),用键7(PIO11)控制复位信号CLR;键6(PIO9)控制状态机工作时钟CLK;待检测串行序列数输入DIN接PIO10(左移,最高位在前);指示输出AB接PIO39~PIO36(显示于数码管6)。下载后:①按实验板“系统复位”键;②用键2和键1输入2位十六进制待测序列数“11100101”;③按键7复位(平时数码6指示显“B”);④按键6(CLK) 8次,这时若串行输入的8位二进制序列码(显示于数码2/1和发光管D8~D0)与预置码“11100101”相同,则数码6应从
原来的B变成A,表示序列检测正确,否则仍为B。
(4)实验内容2:根据习题8-3中的要求3提出的设计方案,重复以上实验内容(将8位待检测预置数由键4/键3作为外部输入,从而可随时改变检测密码)。
(5)实验思考题:如果待检测预置数必须以右移方式进入序列检测器,写出该检测器的VHDL代码(两进程符号化有限状态机),并提出测试该序列检测器的实验方案。
(6)实验报告:根据以上的实验内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。
【例8-11】
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY SCHK IS
PORT(DIN,CLK,CLR : IN STD_LOGIC; --串行输入数据位/工作时钟/复位信号 AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --检测结果输出 END SCHK;
ARCHITECTURE behav OF SCHK IS
SIGNAL Q : INTEGERRANGE 0 TO 8 ;
SIGNALD : STD_LOGIC_VECTOR(7 DOWNTO 0); --8位待检测预置数(密码=E5H) BEGIN
D <= \位待检测预置数 PROCESS( CLK, CLR ) BEGIN
IF CLR = '1' THEN Q <= 0 ;
ELSIF CLK'EVENT AND CLK='1' THEN --时钟到来时,判断并处理当前输入的位 CASE Q IS
WHEN 0=> IF DIN = D(7) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ; WHEN 1=> IF DIN = D(6) THEN Q <= 2 ; ELSE Q <= 0 ; END IF ; WHEN 2=> IF DIN = D(5) THEN Q <= 3 ; ELSE Q <= 0 ; END IF ; WHEN 3=> IF DIN = D(4) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ; WHEN 4=> IF DIN = D(3) THEN Q <= 5 ; ELSE Q <= 0 ; END IF ; WHEN 5=> IF DIN = D(2) THEN Q <= 6 ; ELSE Q <= 0 ; END IF ; WHEN 6=> IF DIN = D(1) THEN Q <= 7 ; ELSE Q <= 0 ; END IF ; WHEN 7=> IF DIN = D(0) THEN Q <= 8 ; ELSE Q <= 0 ; END IF ; WHEN OTHERS => Q <= 0 ; END CASE ; END IF ; END PROCESS ;
PROCESS( Q ) --检测结果判断输出 BEGIN
IF Q = 8 THEN AB <= \序列数检测正确,输出 “A” ELSE AB <= \序列数检测错误,输出 “B” END IF ; END PROCESS ; END behav ;
实验六 乐曲硬件演奏电路设计
(1) 实验目的:学习利用实验5-3的数控分频器设计硬件乐曲演奏电路。
(2) 实验原理:主系统由3个模块组成,例10-29是顶层设计文件,其内部有3个功能模块(如图10-3所示):TONETABA.VHD、NOTETABS.VHD和SPEAKER.VHD。
图10-3 硬件乐曲演奏电路结构(Synplify综合)
与利用微处理器(CPU或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库工学EDA实验指导书 - 图文(2)在线全文阅读。
相关推荐: