SOPC_EDA实验讲义_GW48-PK2

更新时间:2023-04-06 06:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

第一章VHDL文本输入设计方法

1.1 编辑输入并存盘VHDL原文件 1.2 将当前设计设定为工程

1.3 选择VHDL文本编译版本号和排错 1.4 时序仿真

1.5硬件测试 1.6部分实验

第二章全国大学生电子设计竞赛赛题练习

2.1 等精度频率计设计 2.2 数字移相正弦信号发生器设计

2.3 测相仪设计 2.4 逻辑分析相仪设计

2.5 存储示波器设计

第三章Quartus II设计正弦信号发生器

3.1 顶层VHDL文件设计

3.1.1 创建工程和编辑设计文件 3.1.2 创建工程

3.1.3 编译前设置 3.1.4 编译及了解编译结果

3.2 正弦信号数据ROM定制

3.2.1 设计ROM初始化数据文件 3.2.2 定制ROM元件(DATAROM.VHD)

3.2.3仿真 3.2.4 引脚锁定、下载和硬件测试 3.2.5 使用嵌入式逻辑分析仪进行实时测试

3.2.6 对配置器件EPCS4/EPCS1编程 3.2.7 了解此工程的R TL电路图

第四章 MATLAB/DSP Builder DSP硬件模块设计

4.1 可控正弦信号发生器设计

4.1.1 建立设计模型 4.1.2 Simulink模型仿真

4.1.3 SignalCompiler使用方法 4.1.4 使用QuartusII实现时序仿真

4.1.5 使用QuartusII硬件测试与硬件实现

4.2 MA TLAB窗口使用嵌入式逻辑分析仪SignalTapII(自动设计流程)

4.2.1安装SignalTapII Node模块 4.2.2系统仿真和硬件测试首先进行系统仿真

4.4 DDS与数字相移信号发生器设计

第五章Nios嵌入式系统开发向导

5.1 Nios软硬件开发流程; 5.2 Nios软硬件开发流程

5.3 SOPC整体系统生成 5.4 Nios硬件系统生成

第六章模拟EDA实验及其设计软件使用向导

第1节P AC _Designer使用向导第2节设计直流增益为9的放大器第3节ispPAC10/20/80简介第七章 GW48-SOPC/DSP(Cyclone器件)适配板使用说明

第八章单片机与GW48-PK2实验系统接口说明

第九章GWDVP-B电子设计竞赛应用板使用说明

第十章现代计算机组成原理实验适配板、GWAK100A适配板使用说明

第十一章 Nios软件开发

第1节调试软件第2节烧写Flash 第3节从新定位复位执行程序第十二章基于直接VHDL模块的Nios自定义指令设计

第十三章基于DSP Builder生成模块的Nios自定义指令设计

附录GW48系列EDA/SOPC主系统使用说明

第一章VHDL文本输入设计方法

1.1 编辑输入并存盘VHDL原文件

首先应该建立好工作库目录,以作设计工程项目的工作库。例如设文件夹为:E:\muxfile ,以便将设计过程中的相关文件存储在此。任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关文件的文件夹,此文件夹将被EDA软件默认为工作库(Work Library)。注意,文件夹不能用中文。

然后打开MAX+plusII,选择菜单“File”→“New…”,出现对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。在出现的“Untitled-Text Editor”文本编辑窗(图1-1)中键入图1-1所示的VHDL程序(2选1多路选择器),毕后,选择菜单“”,即出现如图1-1所示的“Save As”对话框。首先在“Directories”目录框中选择自己已建立好的存放本文件的目录E:\MUXFILE(用鼠标双击此目录,使其打开),然后在“”框中键入文件名“MUX21A.VHD”,按“OK”按钮,即把输入的文件放在目录E:\MUXFILE中了。

注意,1、VHDL程序文本存盘的文件名必须与文件的实体名一致,如MUX21A.VHD;2、文件的后缀将决定使用的语言形式,在MAX+plusII 中,后缀为.VHD表示VHDL文件;后缀为.TDF表示AHDL文件等。如果后缀正确,存盘后对应该语言的文件中的主要关键词都会改变颜色。

1.2 将当前设计设定为工程

为了使Max+plusII能对输入的设计项目进行处理,在编译/综合MUX21A.VHD之前,需要设置此文件为顶层文件,或称工程文件:Project,或者说将此项设计设置成工程:选择菜单“File”→Project→“Set Project to Current File”,当前的设计工程即被指定为MUX21A 。也可以通过选“File”→“Project”→“Name”,在跳出的“Project Name”窗中指定E:\MUXFILE下的MUX21A.VHD为当前的工程。设定后可以看见MAX+plusII主窗左上方(图1-2)的工程项目路径指向为:“e:\mux”。这个路径指向很重要!

图1-1 在文本编辑窗中输入VHDL文件并存盘图1-2 设定当前文件为工程

图1-3 选择目标器件图1-4 设定VHDL编译版本号如果设计项目由多个设计文件组成,则应该将它们的主文件,即顶层文件设置成Project。如果要对其中某一底层文件进行单独编译、仿真和测试,也必须首先将其设置成Projcet。为了获得与目标器件对应的,精确的时序仿真文件,在对文件编译前必须选定最后实现本设计项目的目标器件,在Max+plusII环境中主要选Altera公司的FPGA或CPLD。在设定工程文件后,应该选择用于编程的目标芯片:选择菜单“Assign”→“Device…”,在弹出的对话框中的“Device

Family”下拉栏中,例如选择ACEX1K,此窗口(图4-3)的Device Family是器件序列栏,应该首先在此拦中选定目标器件对应的序列名。为了选择EP1K30TC144-3器件,应将此栏下方标有Show only Fastest Speed Grades 的勾消去,以便显示出所有速度级别的器件。完成器件选择后,按OK键。

1.3 选择VHDL文本编译版本号和排错

选菜单“MAX+plus II”→“Compiler”菜单,选择如图1-4所示界面上方的“Interfaces”→“VHDL Netlist Reader Settings”,在弹出的窗口中选“VHDL’1993”。

在按“START”键运行编译前,还需要作一件事,即在进入编辑窗(图1-4),选择Processing项,选“Fitter Setting”,进入如图1-5的窗口,消去最上的“Use Quartus Fitter…”的勾。最后按“START”键,运行编译器。

注意,如图1-1所示,MUX21A.VHD文件中的实体结束语句没有加分号“;”,在编译时出现了如图1-6所示的出错信息指示。有时尽管只有1、2个小错,但却会出现大量的出错信息,确定错误所在的最好办法是找到最上一排错误信息指示,用鼠标点成黑色,然后点击如图1-6所示窗口左下方的“Locate”错误定位钮,就能发现在出现文本编译窗中闪动的光标附近找到错误所在。纠正后再次编译,直至排除所有错误。注意闪动的光标指示错误所在只是相对的,错误一般在上方。VHDL文本编辑中还可能出现许多其它错误,如:

图1-5 消去“Use Quartus Fitter…”项图1-6 确定设计文件中的错误

1、错将设计文件存入了根目录,并将其设定成工程,由于没有了工作库,报错信息如下:Error :Can't open VHDL "WORK"

2、错将设计文件的后缀写成.tdf而非.vhd,报错信息如下:Error :Line1,File e:\mux: TDF syntax error: ...

3、未将设计文件名存为其实体名,如错写为muxa.vhd,报错信息如下:Error :Line1,...VHDL Design F ile "muxa.vhd" must contain ...

1.4 时序仿真

接下来应该测试设计项目的正确性,即逻辑仿真,具体步骤如下:

1、建立波形文件。为此设计建立一个波形测试文件。选择菜单“File”项及其“New”,再选择New窗中的Waveform Editer..项,打开波形编辑窗。

2、输入信号节点。在图1-7所示的波形编辑窗的上方选择Node项,在下拉菜单中选择输入信号节点项Enter Nodes from SNF。在弹出的窗口(图1-8)中首先点击List键,这时左窗口将列出该项设计所以信号节点。由于有时只需要观察其中部分信号的波形,因此要利用中间的“=>”键将需要观察的信号选到右栏中,然后点击OK键即可将测试信号s(I)、b(I)、a(I)和y(O)输入仿真波形编辑窗。

图1-7从SNF文件中输入设计文件的信号节点

图1-8 列出并选择需要观察的信号节点

3、设置波形参量。首先设定相关的仿真参数。如图1-9所示,在Options选项中消去网格对齐Snap to Grid 的选择(消去勾),以便能够任意设置输入电平位置,或设置输入时钟信号的周期。

4、如图1-10,1-11所示,设定仿真时间宽度。选择File项及其End time选项,在End time选择窗中选择适当的仿真时间域,如可选50us(50微秒),以便有足够长的观察时间。

5、加上输入信号。图1-12显示了波形编辑窗各按钮的功能。

图1-9 在Options选项中消去网格对齐Snap to Grid的选择(消去勾)

图1-10 设定仿真时间宽度图1-11 设定仿真时间宽度在图1-13仿真波形中,多路选择器mux21a的输入端口a和b分别输入时钟周期为400ns和1.2us的时变信号。由图可见,当控制端s为高电平时,y的输出为b的低频率信号,而当s为低电平时,y的输出为a的高频率信号。

注意,仿真波形文件的建立,一定要十分注意仿真时间区域的设定,以及时钟信号的周期设置,否则即使设计正确也无法获得正确的仿真结果。如图1-14所示,设定了比较合理的仿真时间区域和信号频率,即仿真时间区域不能太小,仿真频率不能太高,即信号周期不能小到与器件的延时相比拟。

图1-12为输入信号设定必要的测试电平或数据图1-15 仿真波形文件存盘

图1-13 为输入信号设定必要的输入信号

6、波形文件存盘。选择File项及其Save as选项,按OK键即可。存盘窗(图1-15)中的波形文件名是默认

的(这里是mux21a.scf),所以直接存盘即可。

7、运行仿真器。选择MAX+plusII项及其中的仿真器Simulator选项,点击跳出的仿真器窗口(图1-16)中的Start键。图1-14是仿真运算完成后的时序波形。注意,刚进入图1-14窗时,应该将最下方的滑标拖向最左侧,以便可观察到初始波形。

8、观察分析波形。还可以进一步了解信号的延时情况。图1-14右侧的竖线是测试参考线,它与鼠标箭头间的时间差显示在窗口上方的Interval小窗中。由图可见输入与输出波形间有一个小的延时量。

图1-14 mux21a仿真波形图1-16 运行仿真器

图1-17 打开延时时序分析窗图1-18 引脚锁定

1.5硬件测试

为在实验系统上验证设计的正确性,完成硬件测试。如果目标器件是EP1K30,建议选择实验电路模式5(参考附图7),用键1(PIO0)控制信号s ;a和b分别接clock5和clock0;输出信号y接扬声器spker。通过短路帽选择clock0接256Hz信号,clock5接1024Hz信号。现在根据以上确定的实验模式锁定多路选择器在目标芯片中的具体引脚。

图1-19 设置编程下载方式图1-20 向目标器件下载配置文件首先通过选择“MAX+plus II” “Compiler”菜单,进入编辑窗,然后在“Assign”项中选“Pin / Location / Chip”选项,在跳出的窗口中的Node Name项中输入引脚a ,这时“Pin Type”项会出现“Input”指示字,表明a 的引脚性质是输入,否则将不出现此字。此时在“PIN”项内输入“126”引脚名,再点击右下方的Add项,此引脚即设定好了;以同样方法分别锁定引脚b、s、y(图1-18),再点击上方的OK。此4个引脚的选择方法是根据附录实验电路模式“NO.5”设定的。关闭“Pin / Location / Chip”窗后,应点击编辑窗的“Start”,将引脚信息编辑进去。编程和测试的步骤如下:(1)选" MAX+PLUS " 项中的“Programmer”项,跳出Programmer窗后,选Options项中的硬件设置项“Hardware Setup”,在此窗的下拉窗中选“ByteBlaster (MV)”项,点击OK即可。(下载方式设定:选择MAX+plusII项及其中的编程器Programmer选项,跳出如图1-19左侧所示的编程器窗口,然后选择Options项的Hardware Setup硬件设

置选项,其窗口如图1-19左侧所示。在其下拉菜单中选ByteBlaster (MV )编程方式。此编程方式对应计算机的并行口下载通道,“MV ”是混合电压的意思。将实验板连接好,接好电源,点“Configure ”,即进行编程下载。

(2)选实验电路模式“NO.5”后,用短路帽设定clock5和clock0的频率分别为256Hz 和1024Hz 。当用键1输入高电平时,扬声器发出256Hz 低频声,当用键1输入低电平时,扬声器发出1024Hz 高频声。也可用示波器观察输出信号。

此项设置只在初次装软件后第一次编程前进行,设置确定后就不必重复此设置了。

(3)如图1-20,点击Configure 键,向1K30下载配置文件,如果连线无误,应出现图1-20报告配置完成的信息提示。

1.6 部分简单实验(以下实验项目选自《EDA 技术使用教程》,更多更详细的实验内容请参考该书)

【实验1】1位全加器VHDL 文本输入设计(实验目的:了解例化语句使用方法):

--程序3:1位二进制全加器顶层设计描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY f_adder IS

PORT (ain ,bin ,cin : IN STD_LOGIC;

cout ,sum : OUT STD_LOGIC );

END ENTITY f_adder;

ARCHITECTURE fd1 OF f_adder IS

COMPONENT h_adder

PORT ( a ,b : IN STD_LOGIC;

co ,so : OUT STD_LOGIC);

END COMPONENT ;

COMPONENT or2a

PORT (a ,b : IN STD_LOGIC;

c : OUT STD_LOGIC);

END COMPONENT ;

SIGNAL d ,e ,f : STD_LOGIC;

BEGIN

u1 : h_adder PORT MAP(a=>ain ,b=>bin ,

co=>d ,so=>e);

u2 : h_adder PORT MAP(a=>e , b=>cin ,

co=>f ,so=>sum);

u3 : or2a PORT MAP(a=>d , b=>f ,c=>cout);

END ARCHITECTURE fd1 ;

注意,此3程序必须分别进行编辑、设置成工程和仿真;最后处理顶层文件程序3。

实验图1 含计数使能、异步复位和计数值并行预置功能4位加法计数器 实验图2 共阴数码管及其电路

【实验2】含异步清0和同步时钟使能的4位加法计数器

实验图1是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,例1是其VHDL 描述。由实验图1所示,图中间是4位锁存器;rst 是异步清信号,高电平有效;clk 是锁存信号;D[3..0]是4位数据输入端。当ENA 为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA 为'0'时将"0000"加载于锁存器。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT4B IS

PORT (CLK ,RST ,ENA : IN STD_LOGIC;

OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT : OUT STD_LOGIC );

END CNT4B;

ARCHITECTURE behav OF CNT4B IS

SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

P_REG: PROCESS(CLK, RST, ENA)

BEGIN

IF RST = '1' THEN CQI <= "0000";

ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN CQI <= CQI + 1; END IF; --程序1:或门逻辑描述 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a ; ARCHITECTURE one OF or2a IS BEGIN c <= a OR b ; END ARCHITECTURE fu1; --程序2:半加器描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so <= NOT(a XOR (NOT b)) ; co <= a AND b ; END ARCHITECTURE fh1;

END IF;

END PROCESS P_REG ; --进位输出

COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); OUTY <= CQI ;

END behav;

引脚锁定以及硬件下载测试:建议选“实验电路模式5”,用键8(PIO7)控制RST;用键7(PIO6)控制ENA;计数溢出COUT接发光管D8(PIO15);OUTY是计数输出,接数码1(PIO19-PIO16,低位靠右);时钟CLK接clock0,通过短路帽选择4Hz信号。引脚锁定窗后进行编译、下载和硬件测试实验。将仿真波形,实验过程和实验结果写进实验报告。

【实验3】7段数码显示译码器设计

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ;

ENTITY DecL7S IS

PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;

END ;

ARCHITECTURE one OF DecL7S IS

BEGIN

PROCESS( A )

BEGIN

CASE A(3 DOWNTO 0) IS

WHEN "0000" => LED7S <= "0111111" ; -- X“3F”→0

WHEN "0001" => LED7S <= "0000110" ; -- X“06”→1

WHEN "0010" => LED7S <= "1011011" ; -- X“5B”→2

WHEN "0011" => LED7S <= "1001111" ; -- X“4F”→3

WHEN "0100" => LED7S <= "1100110" ; -- X“66”→4

WHEN "0101" => LED7S <= "1101101" ; -- X“6D”→5

WHEN "0110" => LED7S <= "1111101" ; -- X“7D”→6

WHEN "0111" => LED7S <= "0000111" ; -- X“07”→7

WHEN "1000" => LED7S <= "1111111" ; -- X“7F”→8

WHEN "1001" => LED7S <= "1101111" ; -- X“6F”→9

WHEN "1010" => LED7S <= "1110111" ; -- X“77”→10

WHEN "1011" => LED7S <= "1111100" ; -- X“7C”→11

WHEN "1100" => LED7S <= "0111001" ; -- X“39”→12

WHEN "1101" => LED7S <= "1011110" ; -- X“5E”→13

WHEN "1110" => LED7S <= "1111001" ; -- X“79”→14

WHEN "1111" => LED7S <= "1110001" ; -- X“71”→15

WHEN OTHERS => NULL ;

END CASE ;

END PROCESS ;

END ;

引脚锁定以及硬件下载测试。建议选实验电路模式6,用数码8显示译码输出(PIO46--PIO40),键8、键7、键6、键5四位控制输入,硬件验证译码器的工作性能。注意,在仿真中,4位输入A必须用总线方式给数据。将仿真波形,实验过程和实验结果写进实验报告。

实验图3 计数器和译码器连接电路的顶层文件原理图

附加实验内容:用VHDL例化语句(参考实验1)按实验图3的方式,以例1和例2为底层元件,完成顶层文件设计,并重复以上实验过程。注意实验图3中的tmp是4位总线,led是7位总线。对于引脚锁定和实验,建议仍选实验电路模式6,用数码8显示译码输出,用键3作为时钟输入(每按2次键为1个时钟脉冲),或直接时钟信号clock0。(答案如下)。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY TOP_PRJ IS

PORT (CLKK,RSTT,ENAA : IN STD_LOGIC;

COUTT : OUT STD_LOGIC;

OUTYY : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END ENTITY TOP_PRJ;

ARCHITECTURE fd1 OF TOP_PRJ IS

COMPONENT CNT4B

PORT (CLK : IN STD_LOGIC; ENA : IN STD_LOGIC; OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT : OUT STD_LOGIC );

END COMPONENT;

COMPONENT DECL7S

PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;

END COMPONENT;

SIGNAL AB : STD_LOGIC_VECTOR(3 DOWNTO 0) ;

BEGIN

u1 : CNT4B PORT MAP(CLK=>CLKK,RST=>RSTT,ENA=>ENAA,OUTY=>AB,COUT=>COUTT);

u2 : DECL7S PORT MAP(A=>AB, LED7S=>OUTYY);

END ARCHITECTURE fd1;;

第二章全国大学生电子设计竞赛赛题练习

2.1 等精度频率计设计

作为电子设计竞赛培训实例,以下介绍电子设计竞赛题

之一“简易数字频率计”设计步骤。根据赛题的基本要求和

发挥部分的要求,拟设计等精度频率计,其指标如下:

(1)频率测试功能:测频范围0.1Hz~50MHz。测频精度:测频全

域相对误差恒为百万分之一。

(2)脉宽测试功能:测试范围0.1μs~1s,测试精度0.01μs 。

(3)占空比测试功能:测试精度1%~99%。

设计步骤1,了解测频原理,给出测频方案:详细测频

原理和测频方案可参考《EDA技术实用教程》第12章。根

图2-1 等精度频率计电路系统原理框图

据图2-3,分析其实现测频率、脉宽和占空比的工作原理(如

说明CL的功能等),给出分析报告。

设计步骤2,在文本编辑器上键入VHDL程序,以便完成图2-1中由FPGA担任的等精度测频专用芯片的设计:详细源程序可参考《EDA技术实用教程》第12章,或光盘.\gwdvpb\gwdvpb_demo\gwdvpb1k13\etester.vhd,其对应的电路如图2-3所示设计步骤3,对etester.vhd进行仿真,要求得出图2-2所示的测频时序图,并说明波形图中各信号的功能和波形设置作用(对输入信号),以及输出波形含义(对输出信号)。例如说明TCLK、START和CL三信号间的关系等。

设计步骤4,根据《EDA》第12章的第12-2式计算图2-2中的TCLK的频率(设BCLK的周期是500ns)。根据DA T A的值来计算。

设计步骤5,再进行测脉宽仿真,要求得出图2-4所示的等精度频率计测脉宽序图,并说明波形图中各信号的功能和波形设置作用(对输入信号),以及输出波形含义(对输出信号)。例如说明TCLK、START和EEND三信号间的关系等,并注意CL和SPUL在测脉宽中的电平设置。

设计步骤6,根据《EDA》第12章计算图4-4中的TCLK的高电平脉宽(设BCLK的周期是500ns),根据DA T A 值来计算。最后模仿波形图2-4,给出测TCLK低电平脉宽的仿真波形。

设计步骤7,如果以上的仿真测试无误,进行引脚锁定,以便能在GW48 EDA系统上进行FPGA硬件功能的测试。

这里假设适配板上的FPGA是EP1K30TC144(取电路模式5)。参考光盘中工程etester.vhd的引脚锁定情况(工程路径为:.\gwdvpb\gw48_pk2_demo\gw48pk1k30\etster.vhd)。

1)BCLK接系统的clock9(接50MHz);2)TCLK接clock0,可选择多个信号测试,如2、4、8Hz等,或拔下短路帽输入其他待测信号);3)信号CLR、CL、SPUL分别由键7、键8、键4控制。4)ST ART和EEND分别由发光管7和8显示。5)8位输出数据DA T A7、DA T A6、…DA T A0分别用数码管2和1显示,由高位到低位分别锁定在FPGA上。6)DA T A读取选择信号SEL2、SEL1、SEL0分别由键3、2、1控制。

设计步骤8,在VHDL文件编译后,下载到GW48系统中,测试其硬件功能,以便更具体地确定FPGA作为一个专用器件的硬件功能。在测试过程中,应该仔细根据图2-2和2-4的电平设置,控制各键,以便测得正确频率和脉宽。

设计步骤9,如果能通过步骤8,则表明专用功能得FPGA已设计完成,可根据GWDVPB板的引脚情况,从新锁定引脚,以便可将1K30插到GWDVP-B板上,与板上的单片机和其他器件协调工作,完成独立的测频系统。引脚锁定情况可参考用于GWDVP-B板上的示例工程:.\gwdvpb\gwdvpb_demo\gwdvpb1k30\etester.vhd 。

设计步骤10,根据图2-1和2-2、2-4各信号的时序设置方式和输出信号的含义,设计单片机的程序,其中包括1)单片机与FPGA的数据通信程序、单片机控制FPGA进行测频和测脉宽的控制程序、数据运算程序等。这里可参考汇编程序: .\gwdvpb\gwdvp_asm\gwdvp3.asm。最后将设计调试好的单片机程序编译后烧写进89C51中。

设计步骤11,将单片机和1K30适配板插在GWDVP-B板上,并用10针下载线将GW48系统上的下载口与GWDVP-B 上1K30板的10针下载口向连接,将设计步骤9完成的文件下载进1K30中,进行统调。待测频率输入口是PIO16。统调中,利用GW48系统的各种标准频率,测试GWDVP-B板的功能。具体操作可参考第四章。

设计步骤12,将1K30的HEX编程文件,用SUPER-PRO编程器烧入27C020中,完成掉电保护设计。

设计步骤13,

C D Q C D Q C D Q C D

Q (DA TA )(START )SPUL EEND=‘0’则EEND=‘1’,否则

当Q2=‘1’,Q3=‘1’PUL=‘0’则PUL=‘1’,否则当Q2=‘1’,Q3=‘0’SS1的逻辑功能为:2选1多路选择器FPGA

‘1’

(SPUL )ENA BENA

‘0’

MUX21

‘1’(EEND )

PL END SS1Q3Q2(SEL )(CLR )(TCLK )

(CL )

(BCLK )

8DATA SEL

332

32

64-8多路选择器

TSQ 32位待测频率计数器ENA

TCLK

TF

CLR

BENA

BCLK

BZH BZQ 32位标准频率计数器CLR

图 2-2 2.2 数字1. 2. 实验原理:图是8是存放正弦波数据的REG32B 和REG10B 图2-5 基于DDS 的数字移相信号发生器电路模型图 图2 –6 数字式移相信号发生器完整结构 3. 实验内容1:首先利用VHDL 完成10位输出数据宽度的移相信号发生器的设计,其中包括设计正弦波形数据MIF 文件(数据深度1024、数据类型是10进制数);给出仿真波形。最后进行硬件测试,对于GW48系统,选择模式1:CLK 接clock0,接12MHz ;用键4、3控制相位字PWORD 输入,键2、1控制频率字FWORD 输入。观察他们的李萨如图形。实验内容2:修改设计,增加幅度控制电路(可以用一乘法器控制输出幅度);实验内容3:利用MATLAB 设计和硬件

实现。 实验思考题:如果频率控制字宽度直接用32位,相位控制字宽度直接用10位,输出仍为10位,时钟为20MHz ,计算频率、相位和幅度3者分别的步进精度是多少?给出输出频率的上下限。

4.示例工程文件:光盘.\cyclone_1k30_demo\ep1k30_adda\phase_shifter\dds_vhdl.vhd ; 演示方法参考该路径readme 。

注意该工程的主文件、其他元件文件和ROM 文件,及其初始化文件LUT10X10.mif (注意,此数据文件若用MA TLAB 和DSP Builder 直接生成最为快捷),另对于GW AC3板,用QuartusII 打开目录:.\cyclone_1k30_demo\ep1c3_adda\phase_shifter_vhdl\dds_vhdl.vhd ;

2.3 测相仪设计

原理:图5是测相仪电路框图。首先利用实验1的等精度频率计测得占空比: K = N1/(N1+N2) 单片机系统

LED显示

键盘控制数字

鉴相

器测频,测周期FPGA 比较整形比较整形

A路信号B路信号计数值

图2-7 测相仪模型

其中N1是高电平脉宽时间内的计数值,N2是低电平脉宽时间内的计数值。图2-8的

TP AS.GDF 工程中的模块ETESTER 的功能结构和源程序与以上的等精度频率计完全相同,只是在原来的待测频率输入端TCLK 接了一个鉴相器模块

EPD ,它的电路结构如图2-9所示。由图2-10可知,两路同频率不同相位的时钟信号P A 和PB 通过鉴相器EPD 后,将输出一路具有不同占空比的脉冲波形。其频率与输入频率相同,而占空比与PB 和P A 信号上升沿的时间有关。显然EPD 的脉宽等于PB 和P A 信号上升沿的时间差。这个时间差即为PB 、P A 间的相位差。它正好等于EPD 的占空比乘以O 360,即:相位差 = K*O 360= N1/(N1+N2)O 360 ;

示例工程文件,光盘: .\gwdvpb\gwdvpb_demo\gwdvp_t_phase1k30\tpas.gdf 。测试步骤:

1、 将GW AK30或GW AC3适配板插在GWDVPB 电子设计应用板上,并对其上的掉电保护器件编程配置光盘目

录中如下编程文件:A :对GW AK30板,编程27C020,以如下工程的HEX 文件编程:

.\gwdvpb\gwdvpb_demo\gwdvp_t_phase1k30\tpas.gdf 中的工程TP AS 对应的HEX 文件编程.;

2、 连上接地线,两路被测信号进入GWDVPB 板上的PIO16和PIO17,按键1测频率、键2测占空比、键3测鉴相后的脉冲信号的脉宽、鉴4测此两路信号的相位差。为了得到两路移相信号,在GW48系统上插上对应的适配板,如实验2的操作,用示波器测出两路正弦信号,使输出峰峰值不大于4V ;用两接线及一地线将由GW48主系统上的两路正弦信号(严格情况下要求整形)接到GWDVPB 板上的两个输入端口(PIO16/PIO17),以便测他们的频率和相差。

图2-8 测相仪电路原理图(TPAS.gdf 工程)

图2-9 相位检测原理图epd

图2-10 鉴相器EPD 的仿真波形

2.4 逻辑分析相仪设计

本文来源:https://www.bwwdw.com/article/spfl.html

Top