工学EDA实验指导书.docx

上传人:b****6 文档编号:7989365 上传时间:2023-01-27 格式:DOCX 页数:48 大小:727.54KB
下载 相关 举报
工学EDA实验指导书.docx_第1页
第1页 / 共48页
工学EDA实验指导书.docx_第2页
第2页 / 共48页
工学EDA实验指导书.docx_第3页
第3页 / 共48页
工学EDA实验指导书.docx_第4页
第4页 / 共48页
工学EDA实验指导书.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

工学EDA实验指导书.docx

《工学EDA实验指导书.docx》由会员分享,可在线阅读,更多相关《工学EDA实验指导书.docx(48页珍藏版)》请在冰豆网上搜索。

工学EDA实验指导书.docx

工学EDA实验指导书

《EDA技术》课程实验指导书

上海海事大学信息工程学院实验中心

2009-07-08

目录

实验一QuartusII原理图设计

1、在QuartusII中用原理图输入法设计8位全加器

2、在QuartusII中用原理图输入法设计较复杂数字系统

实验二基于VHDL的简单组合与时序电路设计

1、应用QuartusII完成基本组合电路设计

2、应用QuartusII完成基本时序电路的设计

3、设计含异步清0和同步时钟使能的加法计数器

实验三数控分频器的设计

实验四用QuartusII设计正弦信号发生器

实验五序列检测器设计

实验六乐曲硬件演奏电路设计

附录:

GW48EDA/SOPC主系统使用说明

实验一QuartusII原理图设计

1、在QuartusII中用原理图输入法设计8位全加器

(1)实验目的:

熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。

(2)实验原理:

一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相临的高位加法器的最低进位输入信号cin相接。

而一个1位全加器可以由半加器来构成。

(3)实验内容1:

按照1-1、1-2图完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设置成一个硬件符号入库。

键1、键2、键3(PIO0/1/2)分别接ain、bin、cin;发光管D2、D1(PIO9/8)分别接sum和cout。

1-1半加器原理图

1-2全加器原理图

(4)实验内容2,建立一个更高层次的原理图设计,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件下载(JTAG模式下载SOF文件)测试。

建议选择电路模式1(附录图3);键2、键1输入8位加数;键4、键3输入8位被加数;数码6/5显示加和;D8显示进位cout。

引脚分配如下:

a[7..0]对应的是PIO[15..8],,引脚分别是12、8、7、6、4、3、2、1。

b[7..0]对应的是PIO[7..0],,引脚分别是240、239、238、237、236、235、234、233。

cin对应的是PIO49,引脚是173。

sum[7..0]对应的是PIO[23..16],,引脚分别是20、19、18、17、16、15、14、13。

cout对应的是PIO39,引脚是160。

结构如图1-3。

1-38位加法器原理图

(5)实验内容4:

要求全程编译后生成用于配置器件EPCS4编程的压缩POF文件,并使用USB-Blaster,通过AS模式对实验板上的EPCS4进行编程,最后进行验证。

(6)实验报告:

详细叙述8位加法器的设计流程;给出各层次的原理图及其对应的仿真波形图;给出加法器的时序分析情况;最后给出硬件测试流程和结果。

2、在QuartusII中用原理图输入法设计较复杂数字系统

(1)实验目的:

熟悉原理图输入法中74系列等宏功能元件的使用方法,掌握更复杂的原理图层次化设计技术和数字系统设计方法。

完成8位十进制频率机的设计。

(2)原理说明:

利用6.2节介绍的2位计数器模块,连接它们的计数进位,用4个计数模块就能完成一个8位有时钟使能的计数器;对于测频控制器的控制信号,在仿真过程中应该注意它们可能的毛刺现象。

最后按照6.2节中的设计流程和方法即可完成全部设计。

(3)实验内容:

首先完成2位频率计的设计,然后进行硬件测试,建议选择电路模式2;数码2和1显示输出频率值,待测频率F_IN接clock0;测频控制时钟CLK接clock2,若选择clock2=8Hz,门控信号CNT_EN的脉宽恰好为1秒。

然后建立一个新的原理图设计层次,在此基础上将其扩展为8位频率计,仿真测试该频率计待测信号的最高频率,并与硬件实测的结果进行比较。

(4)实验报告:

给出各层次的原理图、工作原理、仿真波形图和分析,详述硬件实验过程和实验结果。

实验二基于VHDL的简单组合与时序电路设计

1、应用QuartusII完成基本组合电路设计

(1)实验目的:

熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

(2)实验内容1:

首先利用QuartusⅡ完成2选1多路选择器(例2-1)的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出图2-2所示的仿真波形。

最后在实验系统上进行硬件测试,验证本项设计的功能。

(3)实验内容2:

将此多路选择器看成是一个元件mux21a,利用元件例化语句描述图2-1,编辑输入三选一电路(mux31a.vhd),并将此文件放在同一目录中。

以下是部分参考程序:

...

COMPONENTMUX21A

PORT(a,b,s:

INSTD_LOGIC;

y:

OUTSTD_LOGIC);

ENDCOMPONENT;

...

u1:

MUX21APORTMAP(a=>a2,b=>a3,s=>s0,y=>tmp);

u2:

MUX21APORTMAP(a=>a1,b=>tmp,s=>s1,y=>outy);

ENDARCHITECTUREBHV;

【例2-1】

ENTITYmux21aIS

PORT(a,b,s:

INBIT;

y:

OUTBIT);

ENDENTITYmux21a;

ARCHITECTUREoneOFmux21aIS

BEGIN

PROCESS(a,b,s)

BEGIN

IFs='0'THENy<=a;ELSEy<=b;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREone;

图2-1双2选1多路选择器

图2-2mux21a功能时序波形

按照本章给出的步骤对上例分别进行编译、综合、仿真。

并对其仿真波形作出分析说明。

(4)实验内容3:

引脚锁定以及硬件下载(JTAG模式下载SOF文件)测试。

选择目标器件是EP1C12Q240C8N,选实验电路模式5(附录图7),用键1(PIO0,引脚号为233)控制s0;用键2(PIO1,引脚号为234)控制s1;a3、a2和a1分别接clock5(引脚号为152)、clock0(引脚号为28)和clock2(引脚号为153);输出信号outy仍接扬声器spker(引脚号为174)。

通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。

注意clock0的跳线总选择开关J6(在主晶振20MHz元件附近)。

最后进行编译、下载和硬件测试实验(通过选择键1、键2,控制s0、s1,可使扬声器输出不同音调)。

(5)实验内容4:

要求全程编译后生成用于配置器件EPCS4编程的压缩POF文件,并使用USB-Blaster,通过AS模式对实验板上的EPCS4进行编程,最后进行验证。

(6)实验报告:

根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。

(7)附加内容:

根据本实验以上提出的各项实验内容和实验要求,设计1位全加器。

首先用QuartusⅡ完成3.3节给出的全加器的设计,包括仿真和硬件测试。

实验要求分别仿真测试底层硬件或门和半加器,最后完成顶层文件全加器的设计和测试,给出设计原程序,程序分析报告、仿真波形图及其分析报告。

(8)实验习题:

以1位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。

2、应用QuartusII完成基本时序电路的设计

(1)实验目的:

熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。

(2)实验内容1:

根据实验4-1的步骤和要求,设计触发器(使用例3-6),给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。

【例3-6】

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDFF1IS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

END;

ARCHITECTUREbhvOFDFF1IS

SIGNALQ1:

STD_LOGIC;--类似于在芯片内部定义一个数据的暂存节点

BEGIN

PROCESS(CLK,Q1)

BEGIN

IFCLK'EVENTANDCLK='1'THENQ1<=D;

ENDIF;

ENDPROCESS;

Q<=Q1;--将内部的暂存数据向端口输出(双横线--是注释符号)

ENDbhv;

(3)实验内容2:

设计锁存器(使用例3-14),同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。

【例3-14】

...

PROCESS(CLK,D)BEGIN

IFCLK='1'--电平触发型寄存器

THENQ<=D;

ENDIF;

ENDPROCESS;

(4)实验内容3:

只用一个1位二进制全加器为基本元件和一些辅助的时序电路,设计一个8位串行二进制全加器,要求:

1、能在8-9个时钟脉冲后完成8位二进制数(加数被加数的输入方式为并行)的加法运算,电路须考虑进位输入Cin和进位输出Cout;

2、给出此电路的时序波形,讨论其功能,并就工作速度与并行加法器进行比较;

3、在FPGA中进行实测。

对于GW48EDA实验系统,建议选择电路模式1(附录图3),键2,键1输入8位加数;键4,键3输入8位被加数;键8作为手动单步时钟输入;键7控制进位输入Cin;键9控制清0;数码6和数码5显示相加和;发光管D1显示溢出进位Cout。

4、键8作为相加起始控制,同时兼任清0;工作时钟由clock0自动给出,每当键8发出一次开始相加命令,电路即自动相加,结束后停止工作,并显示相加结果。

就外部端口而言,与纯组合电路8位并行加法器相比,此串行加法器仅多出一个加法起始/清0控制输入和工作时钟输入端。

(提示:

此加法器有并/串和串/并移位寄存器各一)。

(5)实验报告:

分析比较实验内容1和2的仿真和实测结果,说明这两种电路的异同点。

详述实验内容3。

3、设计含异步清0和同步时钟使能的加法计数器

(1)实验目的:

学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

(2)实验原理:

实验程序为例3-22,实验原理参考3.4节,设计流程参考本章。

【例3-22】

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT10IS

PORT(CLK,RST,EN:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUT:

OUTSTD_LOGIC);

ENDCNT10;

ARCHITECTUREbehavOFCNT10IS

BEGIN

PROCESS(CLK,RST,EN)

VARIABLECQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFRST='1'THENCQI:

=(OTHERS=>'0');--计数器异步复位

ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿

IFEN='1'THEN--检测是否允许计数(同步使能)

IFCQI<9THENCQI:

=CQI+1;--允许计数,检测是否小于9

ELSECQI:

=(OTHERS=>'0');--大于9,计数值清零

ENDIF;

ENDIF;

ENDIF;

IFCQI=9THENCOUT<='1';--计数大于9,输出进位信号

ELSECOUT<='0';

ENDIF;

CQ<=CQI;--将计数值向端口输出

ENDPROCESS;

ENDbehav;

(3)实验内容1:

在QuartusⅡ上对例3-22进行编辑、编译、综合、适配、仿真。

说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。

(4)实验内容2:

引脚锁定以及硬件下载测试(参考4.2节)。

引脚锁定后进行编译、下载和硬件测试实验。

将实验过程和实验结果写进实验报告。

(5)实验内容3:

使用SignalTapII对此计数器进行实时测试,流程与要求参考4.3节。

(6)实验内容4:

从设计中去除SignalTapII,要求全程编译后生成用于配置器件EPCS1编程的压缩POF文件,并使用ByteBlasterII,通过AS模式对实验板上的EPCS1进行编程,最后进行验证。

(7)实验内容4:

为此项设计加入一个可用于SignalTapII采样的独立的时钟输入端(采用时钟选择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电路图。

图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】

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDVFIS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

FOUT:

OUTSTD_LOGIC);

END;

ARCHITECTUREoneOFDVFIS

SIGNALFULL:

STD_LOGIC;

BEGIN

P_REG:

PROCESS(CLK)

VARIABLECNT8:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFCNT8="11111111"THEN

CNT8:

=D;--当CNT8计数计满时,输入数据D被同步预置给计数器CNT8

FULL<='1';--同时使溢出标志信号FULL输出为高电平

ELSECNT8:

=CNT8+1;--否则继续作加1计数

FULL<='0';--且输出溢出标志信号FULL为低电平

ENDIF;

ENDIF;

ENDPROCESSP_REG;

P_DIV:

PROCESS(FULL)

VARIABLECNT2:

STD_LOGIC;

BEGIN

IFFULL'EVENTANDFULL='1'THEN

CNT2:

=NOTCNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反

IFCNT2='1'THENFOUT<='1';ELSEFOUT<='0';

ENDIF;

ENDIF;

ENDPROCESSP_DIV;

END;

实验四正弦信号发生器设计

(1)实验目的:

进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。

(2)实验原理:

参考本章相关内容。

(3)实验内容1:

根据例7-4,在QuartusII上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。

最后在实验系统上实测,包括SignalTapII测试、FPGA中ROM的在系统数据读写测试和利用示波器测试。

最后完成EPCS1配置器件的编程。

【例7-4】正弦信号发生器顶层设计

LIBRARYIEEE;--正弦信号发生器源文件

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSINGTIS

PORT(CLK:

INSTD_LOGIC;--信号源时钟

DOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位波形数据输出

END;

ARCHITECTUREDACCOFSINGTIS

COMPONENTdata_rom--调用波形数据存储器LPM_ROM文件:

data_rom.vhd声明

PORT(address:

INSTD_LOGIC_VECTOR(5DOWNTO0);--6位地址信号

inclock:

INSTD_LOGIC;--地址锁存时钟

q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;

SIGNALQ1:

STD_LOGIC_VECTOR(5DOWNTO0);--设定内部节点作为地址计数器

BEGIN

PROCESS(CLK)--LPM_ROM地址发生器进程

BEGIN

IFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;--Q1作为地址发生器计数器

ENDIF;

ENDPROCESS;

u1:

data_romPORTMAP(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程序生成同样格式的初始化文件和使用DSPBuilder/MATLAB来生成。

6仿真7引脚锁定、下载和硬件测试

8使用嵌入式逻辑分析仪进行实时测试

图3-33SignalTapII数据窗的实时信号

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)实验目的:

用状态机实现序列检测器的设计,了解一般状态机的设计与应用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1