当前位置:文档之家› VHDL实验指导书

VHDL实验指导书

VHDL实验指导书
VHDL实验指导书

实验一QuartusII软件应用

一、实验目的

1、熟悉EDA开发平台的基本操作。

2、掌握EDA开发工具的图形设计方法。

3、掌握图形设计的编译与验证方法。

二、实验仪器

PC机一台QuartusII软件

三、实验内容

1、实验原理图:建立一个4-bit 计数器图形设计文件(如图1.1示);

图 1.1 图形设计例图

对上述计数器进行功能和时间仿真,验证其功能并测试其最高工作频率。

利用向导创建一个新器件(6位全加器:使能、流水线等参数自行设定)。

2、实验步骤:

①新建一个文件夹,一般在F盘里。

②打开QuartusII软件,选择File/New,在弹出的窗口中选Device Design Files选项卡,再选择Block Diagram/Schematic 选项,单击OK后打开图形编辑窗口。

③选择File/Save As命令,保存文件在已经创建的文件夹里。当出现询问是否创建工程的窗口,应当单击是进入创建工程流程,否则要重新创建工程把文件添加进去。

④打开工程中的原理图文件,在原理图编辑窗口的任何一个位置右击,将出现快捷菜单,选择Insert /Symbol命令,出现元件输入对话框,选择相应的器件,并连接好电路,然后分别在input和output 的PIN NAME上双击使其变黑色,再分别输入引脚名。

⑤选择Processing/Start Compilation命令,进行全程编译。

⑥打开波形编辑器,选择File/New,在New中选择Other Files中的 Vector Waveform File 选项,单击OK,出现空白的波形编译窗口

⑦选择File/Save As命令,存盘。文件名一定要与原理图文件名一致。

然后添加相应的端口信号节点到波形编辑器中,设置合理的输入信号。

⑧选择Processing/Start Simulation,进行波形仿真。

⑨选择Processing/Classic Timing Analyzer Tool测试最高工作频率。

⑩选择Tools/MegaWizard Plug-In M anager,根据向导提示创建一个6位全加器。

3、实验结果记录:

打印出实验原理图与仿真波形图,写出最高工作频率,打印出利用向导创建的新器件的图形,完成实验报告

四、实验研究与思考

1、延迟时间分析、最高工作频率分析等时间分析有何重要性?

2、流水线的作用是什么?对那些性能有影响?

2、功能仿真、验证起到什么作用?

实验二VHDL软件设计

一、实验目的

1、熟悉EDA开发平台的基本操作。

2、掌握EDA开发工具的VHDL设计方法。

3、掌握硬件描述语言设计的编译与验证方法。

二、实验仪器

PC机一台QuartusII软件

三、实验内容

1、24进制加法计数器的程序:

LIBRARY Ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.ALL;

ENTITY count24 IS

PORT(en,clk: IN STD_LOGIC;

qa: out STD_LOGIC_VECTOR(3 DOWNTO 0);

--个位数计数

qb: out STD_LOGIC_VECTOR(1 DOWNTO 0));

--十位数计数

END count24;

ARCHITECTURE a1 OF count24 IS

BEGIN

process(clk)

variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0);

variable tmb: STD_LOGIC_VECTOR(1 DOWNTO 0);

begin

if clk'event and clk='1' then

if en='1' then

if tma="1001" then tma:="0000";tmb:=tmb+1;

Elsif tmb="10" and tma="0011" then tma:="0000";

tmb:="00";

else tma:=tma+1;

end if;

end if;

end if;

qa<=tma;

qb<=tmb;

end process;

END a1;

2、实验步骤:

1)24进制计数器

①新建一个文件夹,一般在F盘里。

②打开QuartusII软件,选择File/New,在弹出的窗口中选Device Design Files选项卡,再选择VHDL File 选项,单击OK后打开程序编辑窗口。

③选择File/Save As命令,保存文件在已经创建的文件夹里,文件名一定要与程序的实体名一致。当出现询问是否创建工程的窗口,应当单击是进入创建工程流程,否则要重新创建工程把文件添加进去。

④打开工程中的程序文件,把1中24进制加法计数器的程序输入。

⑤选择Processing/Start Compilation命令,进行全程编译。

⑥打开波形编辑器,选择File/New,在New中选择Other Files中的 Vector Waveform File 选项,单击OK,出现空白的波形编译窗口。

⑦选择File/Save As命令,存盘。文件名一定要与原理图文件名一致。

⑧然后添加相应的端口信号节点到波形编辑器中,设置合理的输入信号。

⑨选择Processing/Start Simulation,进行波形仿真。

2)修改以上程序获得60进制加法计数器,并进行功能和时间仿真验证。

3、实验结果记录:

手写出24进制与60进制的加法器的实验程序,打印出仿真波形图,完成实验报告

四、实验研究与思考

1、比较图形设计和语言设计方法的差别和优缺点。

实验三3-8译码器

一、实验目的

1、掌握组合逻辑电路的设计方法。

2、掌握组合逻辑电路的静态测试方法。

3、初步掌握EDA软件的基本操作与应用。

4、初步了解可编程器件的设计全过程。

二、实验仪器

PC机一台QuartusII软件

三、实验内容

1、新建一个设计工程;

2、输入并连接如图3.1所示原理图;

图3.1 3-8译码器原理图

3、选择目标器件(EP1C3T144C8);

4、编译与适配;

5、波形文件输入与设定,功能仿真与验证;

6、管脚锁定;

7、器件编程下载;

8、硬件测试;

9、采用VHDL语言描述以上3-8译码器,并重复以上4-8项;

9、自行设计纪录方式,完成实验报告

四、实验研究与思考

1、组合逻辑电路的设计应该注意什么问题?

实验四组合逻辑电路的VHDL描述

一、实验目的

1、掌握组合逻辑电路的设计方法。

2、掌握组合逻辑电路的静态测试方法。

3、熟悉FPGA设计的过程,比较原理图输入和文本输入的优劣。

二、实验仪器

PC机一台QuartusII软件

三、实验内容

1、用VHDL语言设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于5时,判别电路输出为1,反之为0。参考电路原理图如图4.1所示。

图4.1 四舍五入判别参考电路

2、用VHDL语言设计四个开关控制一盏灯的逻辑电路,要求改变任意开关的状态能够引起灯亮灭状态的改变。(即任一开关的合断改变原来灯亮灭的状态,参考电路原理图如图4.2所示。)

图4.2 灯控参考电路

3、用VHDL语言设计一个优先排队电路(参考电路原理图如图4.3所示),其中:A=1,最高优先级;B=1,次高优先级;C=1,最低优先级。要求输出端最多只能有一端为―1‖,即只能是优先级较高的输入端所对应的输出端为―1‖。

图4.3 优先排队参考电路

4、自行设计纪录方式,完成实验报告

四、实验研究与思考

1、CPLD和FPGA有什么差别?设计中应该注意什么问题?

2、图形设计方法中采用LPM设计有什么好处?

实验五触发器的VHDL描述

一、实验的目的

1、掌握触发器功能的测试方法。

2、掌握基本RS触发器的组成及工作原理。

3、掌握集成JK触发器和D触发器的逻辑功能及触发方式。

4、掌握几种主要触发器之间相互转换的方法。

5、通过实验、体会CPLD芯片的高集成度和多I/O口。

二、实验仪器

PC机一台QuartusII软件

三、实验内容

1、用VHDL语言设计基本RS触发器、同步RS触发器、J-K触发器、D触发器,并将这些触发器集成于一个电路(芯片)中(参考设计电路如图5.1所示),并研究其相互转换的方法。

图5.1 触发器设计参考电路

2、编译、仿真、管脚锁定和器件编成下载后进行硬件测试并纪录测试结果到下列各触发器的真值表中。

表一:RS寄存器

表四:JK 触发器

4、分别将JK触发器和D触发器接成T触发器,模拟其工作状态,并画出其波形图。

5、自行设计纪录方式,完成实验报告

四、实验研究与思考

1、时序电路的设计与组合电路的设计有何差别?

2、时序电路的同步设计和异步设计有何不同?

3、异步设计的竞争冒险现象如何产生,应该如何克服竞争冒险现象?

实验六扫描显示驱动电路

一、实验目的

1、了解实验系统中8位八段数码管显示模块的工作原理;

2、掌握计数器和地址发生器的VHDL描述方法;

3、掌握LED数码管7段译码器的VHDL描述方法;

4、掌握编码器的VHDL描述方法;

5、设计标准扫描驱动电路模块,以备后面实验用。

二、实验仪器

PC机一台QuartusII软件EDA实验箱

三、实验内容

图6.1所示的是8位数码扫描显示电路,其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就

必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。其VHDL示例程序如程序10.1所示。

图6.1 8位数码扫描显示电路图

1、实验内容1:理解程序中各语句的含义,以及该例的整体功能。对该例进行编辑、编译、综合、适配、仿真,给出仿真波形。

实验方式:若考虑小数点,SG的8个段分别与PIO49、PIO48、…、PIO42(高位在右)、BT的8个位分别与PIO34、PIO35、…、PIO41(高位在左);电路模式不限,引脚图参考附图11。将GW48EDA系统左下方的拨码开关全部向上拨,这时实验系统的8个数码管构成图10.1的电路结构,时钟CLK可选择clock0,通过跳线选择16384Hz信号。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。

2、自行设计纪录方式,完成实验报告

【例5.1】

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY SCAN_LED IS

PORT ( CLK : IN STD_LOGIC;

SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --段控制信号输出

BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); --位控制信号输出END;

ARCHITECTURE one OF SCAN_LED IS

SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL A : INTEGER RANGE 0 TO 15;

BEGIN

P1:PROCESS( CNT8 ) --编码器

BEGIN

CASE CNT8 IS

WHEN "000" => BT <= "00000001" ; A <= 1 ;

WHEN "001" => BT <= "00000010" ; A <= 3 ;

WHEN "010" => BT <= "00000100" ; A <= 5 ;

WHEN "011" => BT <= "00001000" ; A <= 7 ;

WHEN "100" => BT <= "00010000" ; A <= 9 ;

WHEN "101" => BT <= "00100000" ; A <= 11 ;

WHEN "110" => BT <= "01000000" ; A <= 13 ;

WHEN "111" => BT <= "10000000" ; A <= 15 ;

WHEN OTHERS => NULL ;

END CASE ;

END PROCESS P1;

P2:PROCESS(CLK) --计数器

BEGIN

IF CLK'EVENT AND CLK = '1' THEN CNT8 <= CNT8 + 1;

END IF;

END PROCESS P2 ;

P3:PROCESS( A ) –-译码电路

BEGIN

CASE A IS

WHEN 0 => SG <= "0111111"; WHEN 1 => SG <= "0000110";

WHEN 2 => SG <= "1011011"; WHEN 3 => SG <= "1001111";

WHEN 4 => SG <= "1100110"; WHEN 5 => SG <= "1101101";

WHEN 6 => SG <= "1111101"; WHEN 7 => SG <= "0000111";

WHEN 8 => SG <= "1111111"; WHEN 9 => SG <= "1101111";

WHEN 10 => SG <= "1110111"; WHEN 11 => SG <= "1111100";

WHEN 12 => SG <= "0111001"; WHEN 13 => SG <= "1011110";

WHEN 14 => SG <= "1111001"; WHEN 15 => SG <= "1110001";

WHEN OTHERS => NULL ;

END CASE ;

END PROCESS P3;

END;

例6.1是扫描显示的示例程序,其中clk是扫描时钟;SG为7段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT是位选控制信号,接图5-20中的8个选通信号:k1、k2、…k8 。程序中CNT8是一个3位计数器,作扫描计数信号,由进程P2生成;进程P3是7段译码查表输出程序,与例5-18相同;进程P1是对8个数码管选通的扫描程序,例如当CNT8等于"001" 时,K2对应的数码管被选通,同时,A被赋值3,再由进程P3译码输出"1001111",显示在数码管上即为―3‖;当CNT8扫变时,将能在8个数码管上显示数据:13579BDF 。

四、实验研究与思考

1、字形编码的种类,即一个8段数码管可产生多少种字符,产生所有字符需多少根译码信号线?

2、字符显示亮度和扫描频率的关系,且让人感觉不出光烁现象的最低扫描频率是多少?

3、扫描显示和静态显示有什么差别?使用扫描显示有什么好处?

实验七VHDL硬件设计

-------计数器及时序电路描述

一、实验目的

1、了解时序电路的经典设计方法(JK触发器和一般逻辑门组成的时序逻辑电路)。

2、了解同步计数器,异步计数器的使用方法。

3、了解同步计数器通过清零阻塞法和预显数法得到循环任意进制计数器的方法。

4、理解时序电路和同步计数器加译码电路的联系,设计任意编码计数器。

5、了解同步设计和异步设计的区别。

二、实验仪器

PC机一台QuartusII软件EDA实验箱

三、实验内容

1、用JK触发器设计异步四位二进制加法计数器。8位LED数码管16进制显示扫描显示驱动电路设计,实验参考原理图如图7.1所示。其中,计数时钟频率CLK<2Hz;扫描时钟频率>40Hz;四位JK触发器接成异步计数器;SEL0~SEL2为扫描地址(控制八位数码管的扫描顺序和速度);A……G为显示译码输出,代表数码管的八个段位(a,b,c,d,e,f,g);八位数码管同时顺序显示0~F。

图7.1 计数器设计参考原理图

3.绘制原理图后进行仿真验证,最后下载到实验箱。

4、自行设计纪录方式,完成实验报告

四、实验研究与思考

1、说明在FPGA设计中,同步设计和异步设计的不同之处。

2、图形设计和VHDL语言设计编程各有什么优点,混合编程时应注意些什么问题?

3、应用状态机设计时序电路需要注意哪些问题?

实验八函数信号发生器

一、实验目的

1、了解函数信号发生的方法。

2、掌握LPM_ROM的使用方法。

3、了解DAC0832的工作原理和控制时序。

4、掌握DAC0832的控制时序的VHDL设计实现方法。

5、了解低通滤波电路的原理及其在信号发生中的应用。

2、熟悉SignalTap II测试方法。

二、实验仪器

计算机、QuartusII软件、EDA试验箱、示波器。

三、实验内容

1、在Quartus II上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。最后在实验系统上实测。示例程序如例9.1,

【例9.1】正弦信号发生器顶层设计

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‖向下拨,则波形滤波输出,向上拨则未滤波输出,这可从输出的波形看出。

2、修改例14.1的数据ROM文件,设其数据线宽度为8,地址线宽度也为8,初始化数据文件使用MIF 格式,用C程序产生正弦信号数据,最后完成以上相同的实验。

3、设计一任意波形信号发生器,可以使用LPM双口RAM担任波形数据存储器,利用单片机产生所需要的波形数据,然后输向FPGA中的RAM(可以利用GW48系统上与FPGA接口的单片机完成此实验,D/A 可利用系统上配置的0832或5651高速器件)。

4、自行设计纪录方式,完成实验报告

四、实验研究与思考

1、采用本方法估计可以产生的正弦波的频率能到多少?

2、若要产生任意信号波形和高速波形输出应该注意什么问题?

实验九数字钟

一、实验目的

1、掌握多位计数器相连的设计方法。

2、掌握十进制,六进制,二十四进制计数器的设计方法。

3、继续巩固多位共阴极扫描显示数码管的驱动,及编码。

4、掌握扬声器的驱动。

5、LED灯的花样显示。

6、掌握FPGA技术的层次化设计方法。

二、实验仪器

计算机、QuartusII软件、EDA试验箱。

三、实验内容

1、要求

具有时、分、秒计数显示功能,以二十四小时循环计时;具有清零、调节小时、分钟的功能;具有整点报时和LED灯花样显示的功能;各种进制的计数及时钟控制模块(10进制、六进制、24进制)、扫描分时显示、译码模块、彩灯,扬声器编码模块都采用VHDL语言编写,设计参考原理图如图11.1所示。

2、内容

(1)根据电路特点,可在教师指导下用层次设计概念。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。让几个学生分做和调试其中之一,然后再将各模块和起来联试。以培养学生之间的合作精神,同时加深层次化设计概念。扫描显示设计请参考实验十。

(2)了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合。

图9.1 数字钟参考设计原理图

3、自行设计纪录方式,完成实验报告

四、实验研究与思考

1、层次化设计与模块化设计有何优点?

2、扫描电路实现显示功能的潜在好处?

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

第一节 GW48教学实验系统原理与使用介绍

一、GW48系统使用注意事项

1、闲置不用GW48系统时,必须关闭电源!!!

2、在实验中,当选中某种模式后,要按一下右侧的复位键,以使系统进入该结构模式工作。注意此复位键仅对实验系统的监控模块复位,而对目标器件FPGA 没有影响,FPGA 本身没有复位的概念,上电后即工作,在没有配置前,FPGA 的I/O 口是随机的,故可以从数码管上看到随机闪动,配置后的I/O 口才会有确定的输出电平。

3、换目标芯片时要特别注意,不要插反或插错,也不要带电插拔,确信插对后才能开电源。其它接口都可带电插拔。请特别注意,尽可能不要随意插拔适配板,及实验系统上的其他芯片。

4、 使用实验系统前,查阅系统的默认设置ppt 文件:EDA 技术与VHDL 书实验课件说明_必读 .ppt 。

二、GW48系统主板结构与使用方法

以下将详述GW48系列SOPC/EDA 实验开发系统(GW48-PK2/CK )结构与使用方法,对于这2种型号的不同之处将给予单独指出。该系统的实验电路结构是可控的。即可通过控制接口键,使之改变连接方式以适应不同的实验需要。因而,从物理结构上看,实验板的电路结构是固定的,但其内部的信息流在主控器的控制下,电路结构将发生变化---重配置。这种―多任务重配置‖设计方案的目的有3个:

1、适应更多的实验与开发项目;

2、适应更多的PLD 公司的器件;

3、适应更多的不同封装的FPGA 和CPLD 器件。系统板面主要部件及其使用方法说明如下。 以下是对GW48系统主板功能块的注释。

ASDO

DATA0nCONFIG CONF_DONE

DCLK

GND

nCSO nCE VCCIO ByteBlast II 在线编程座

GND o o o o o

o

o o o o 在线编程座

ByteBlast(MV)SEL1SEL0GND

TDI

nSTA TMS TDO TCK o o o o o

o

o o o o 主板右数第2、3列“目标板插座”信号相同

2.5V

3.3V 1.8V -12V +12V PIO79

PIO78

PIO75PIO74PIO73PIO72PIO71PIO70PIO69PIO68CON2

CON1

PIO77

PIO76

PIO67PIO66PIO65PIO64PIO63PIO62PIO61PIO60

o

o o o o o o o o o o

o o o o o o o o o SEL1SEL0o o o o o o o o o o 目标

板插座1

4039PIO24PIO22PIO20PIO18PIO16PIO14PIO12PIO10PIO8PIO6PIO4nSTA PIO0PIO2VCC

PIO25PIO23PIO21PIO19PIO7PIO17PIO15PIO13PIO11PIO9PIO5PIO3PIO1o o o o o o o o o o o o o o o o o o o o o o o o o GND TCK TDO TMS TDI o o o o o 目标板插座2

4039PIO27

PIO26PIO29PIO31PIO33PIO35PIO37PIO39PIO41PIO43PIO45PIO47PIO49CLOCK0

CLOCK2

GND

PIO28PIO30PIO32PIO34PIO36PIO38PIO40PIO42PIO44PIO46PIO48SPEAKER CLOCK5CLOCK9VCC o

o

o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o

o o

o o

o o o

附图1 GW48 EDA 系统电子设计二次开发信号图

(1) ―模式选择键‖:按动该键能使实验板产生12种不同的实验电路结构。这些结构如第二节的13 张

实验电路结构图所示。例如选择了―NO.3‖图,须按动系统板上此键,直至数码管―模式指示‖数码管显示―3‖,于是系统即进入了NO.3 图所示的实验电路结构。

(2) 适配板:这是一块插于主系统板上的目标芯片适配座。对于不同的目标芯片可配不同的适配座。可用的目标芯片包括目前世界上最大的六家FPGA/CPLD 厂商几乎所有CPLD 、FPGA 和所有ispPAC 等模拟EDA 器件。第七节的表中已列出多种芯片对系统板引脚的对应关系,以利在实验时经常查用。

(3) ByteBlasterMV 编程配置口:如果要进行独立电子系统开发、应用系统开发、电子设计竞赛等开发实践活动,首先应该将系统板上的目标芯片适配座拔下(对于Cyclone 器件不用拔),用配置的10芯编程线将―ByteBlasterMV‖口和独立系统上适配板上的10芯口相接,进行在系统编程(如GWDVP-B 板),进行调试测试。―ByteBlasterMV‖口能对不同公司,不同封装的CPLD/FPGA 进行编程下载,也能对isp 单片机89S51

等进行编程。编程的目标芯片和引脚连线可参考附图1,从而进行二次开发。

(4)ByteBlasterII编程配置口:该口主要用于对Cyclone系列AS模式专用配置器件EPCS4和EPCS1等编程。

(5) 混合工作电压源:系统不必通过切换即可为CPLD/FPGA目标器件提供5V、3.3V、2.5V、1.8V和1.5V工作电源,此电源位置可参考附图1。

(6)JP5编程模式选择跳线:(仅GW48-PK2型含此)。如果要对Cyclone的配置芯片进行编程,应该将跳线接于―ByBtII‖端,在将标有―ByteBlasterII‖编程配置口同适配板上EPCS4/1的AS模式下载口用10芯线连接起来,通过QuartusII进行编程。当短路―Others‖端时,可对其它所有器件编程,端口信号参考附图1。

(7)JP6/JVCC/VS2编程电压选择跳线:跳线JVCC(GW48—PK2型标为―JP6‖)是对编程下载口的选择跳线。对5V器件,如10K10、10K20、7128S、1032、95108、89S51单片机等,必须选―5.0V‖。而对低于或等于3.3V的低压器件,如1K30、1K100、10K30E、20K300、Cyclone、7128B等一律选择―3.3V‖一端。

(8)并行下载口:此接口通过下载线与微机的打印机口相连。来自PC机的下载控制信号和CPLD/FPGA 的目标码将通过此口,完成对目标芯片的编程下载。计算机的并行口通信模式最好设置成―EPP‖模式。

(9)键1~键8 :为实验信号控制键,此8个键受―多任务重配置‖电路控制,它在每一张电路图中的功能及其与主系统的连接方式随模式选择键的选定的模式而变,使用中需参照第二节中的电路图。

(10)键9~键14 :(GW48—PK2型含此键)此6个键不受―多任务重配置‖电路控制,由于键信号速度慢,所以其键信号输入口是全开放的,各端口定义在插座―JP8‖处,可通过手动节插线的方式来实用,键输出默认高电平。

注意:键1至键8是由―多任务重配置‖电路结构控制的,所以键的输出信号没有抖动问题,不需要在目标芯片的电路设计中加入消抖动电路,这样,能简化设计,迅速入门。但设计者如果希望完成键的消抖动电路设计练习,必须使用键9至键14来实现。

(11)数码管1~8/发光管D1~D16 :受―多任务重配置‖电路控制,它们的连线形式也需参照第二节的电路图。

(12)―时钟频率选择” :位于主系统的右小侧,通过短路帽的不同接插方式,使目标芯片获得不同的时钟频率信号。对于―CLOCK0‖,同时只能插一个短路帽,以便选择输向―CLOCK0‖的一种频率:信号频率范围:0.5Hz–50MHz。由于CLOCK0可选的频率比较多,所以比较适合于目标芯片对信号频率或周期测量等设计项目的信号输入端。右侧座分三个频率源组,它们分别对应三组时钟输入端:CLOCK2、CLOCK5、CLOCK9。例如,将三个短路帽分别插于对应座的2Hz、1024Hz和12MHz,则CLOCK2、CLOCK5、CLOCK9分别获得上述三个信号频率。需要特别注意的是,每一组频率源及其对应时钟输入端,分别只能插一个短路帽。也就是说最多只能提供4个时钟频率输入FPGA:CLOCK0、CLOCK2、CLOCK5、CLOCK9。

(13)扬声器:与目标芯片的―SPEAKER‖端相接,通过此口可以进行奏乐或了解信号的频率,它与目标器件的具体引脚号,应该查阅附录第3节的表格。

(14)PS/2接口:通过此接口,可以将PC机的键盘和/或鼠标与GW48系统的目标芯片相连,从而完成PS/2通信与控制方面的接口实验,GW48-GK/PK2含另一PS/2接口,引脚连接情况参见实验电路结构NO.5(附图7)。

(15)VGA视频接口:通过它可完成目标芯片对VGA显示器的控制。详细连接方式参考附图7(对GW48-PK2主系统),或附图13(GW48-CK主系统)。

(16)单片机接口器件:它与目标板的连接方式也已标于主系统板上:连接方式可参见附图11。

注1:对于GW48-PK2系统,实验板右侧有一开关,若向―TO_ FPGA‖拨,将RS232通信口直接与FPGA 相接;若向―TO_MCU‖拨,则与89S51单片机的P30和P31端口相接。于是通过此开关可以进行不同的通信实验,详细连接方式可参见附图11。平时此开关应该向―TO_MCU‖拨,这样可不影响FPGA的工作!

注2:GW48-EK系统上的用户单片机89C51的各引脚是独立的(时钟已接12MHz),没有和其他任何电路相连,实验时必须使用连接线连接,例如,若希望89C51通过实验板右侧的RS232口与PC机进行串行通信,必须将此单片机旁的40针座(此座上每一脚恰好与89C51的对应脚相接)上的P30、P31分别与右侧的TX30、RX30相接。

(17)RS-232串行通讯接口:此接口电路是为FPGA与PC通讯和SOPC调试准备的。或使PC机、单片机、FPGA/CPLD三者实现双向通信。对于GW48-EK系统,其通信端口是与中间的双排插座上的TX30、

RX31相连的。详细连接方式参考附图11(对GW48-GK/PK2主系统),或附图13(对GW48-CK主系统)。

(18)―AOUT” D/A转换:利用此电路模块(实验板左下侧),可以完成FPGA/CPLD目标芯片与D/A 转换器的接口实验或相应的开发。它们之间的连接方式可参阅附图7(实验电路结构NO.5):D/A的模拟信号的输出接口是―AOUT‖,示波器可挂接左下角的两个连接端。当使能拨码开关8:―滤波1‖时,D/A的模拟输出将获得不同程度的滤波效果。

注意:进行D/A接口实验时,需打开系统上侧的+/-12V电源开关(实验结束后关上此电源!)。

(19)―AIN0”/“AIN1”:外界模拟信号可以分别通过系统板左下侧的两个输入端―AIN0‖和―AIN1‖进入A/D 转换器ADC0809的输入通道IN0和IN1,ADC0809与目标芯片直接相连。通过适当设计,目标芯片可以完成对ADC0809的工作方式确定、输入端口选择、数据采集与处理等所有控制工作,并可通过系统板提供的译码显示电路,将测得的结果显示出来。此项实验首先需参阅第二节的―实验电路结构NO.5‖有关0809与目标芯片的接口方式,同时了解系统板上的接插方法以及有关0809工作时序和引脚信号功能方面的资料。

注意:不用0809时,需将左下角的拨码开关的―A/D使能‖和―转换结束‖打为禁止:向上拨,以避免与其他电路冲突。ADC0809 A/D转换实验接插方法(如,附图7,实验电路结构NO.5图所示):

a、左下角拨码开关的―A/D使能‖和―转换结束‖拨为使能:向下拨,即将ENABLE(9)与PIO35相接;若向

上拨则禁止,即则使ENABLE(9)←0,表示禁止0809工作,使它的所有输出端为高阻态。

b、左下角拨码开关的―转换结束‖使能,则使EOC(7)←PIO36,由此可使FPGA对ADC0809的转换状态

进行测控。

(20)VR1/“AIN1”:VR1电位器,通过它可以产生0V~+5V 幅度可调的电压。其输入口是0809的IN1(与外接口AIN1相连,但当AIN1插入外输入插头时,VR1将与IN1自动断开)。若利用VR1产生被测电压,则需使0809的第25脚置高电平,即选择IN1通道,参考―实验电路结构NO.5‖。

(21)AIN0的特殊用法:系统板上设置了一个比较器电路,主要以LM311组成。若与D/A电路相结合,可以将目标器件设计成逐次比较型A/D变换器的控制器件参考―实验电路结构NO.5‖。

(22)系统复位键:此键是系统板上负责监控的微处理器的复位控制键,同时也与接口单片机和LCD 控制单片机的复位端相连。因此兼作单片机的复位键。

(23)下载控制开关:(仅GW48—GK/PK型含此开关)在系统板的左侧的开关。当需要对实验板上的目标芯片下载时必须将开关向上打(即―DLOAD‖);而当向下打(LOCK)时,将关闭下载口,这时可以将下载并行线拔下而作它用(这时已经下载进FPGA的文件不会由于下载口线的电平变动而丢失);例如拔下的25芯下载线可以与其他适配板上的并行接口相接,以完成类似逻辑分析仪方面的并行通信实验。

(24)跳线座SPS :短接―T_F‖可以使用―在系统频率计‖。频率输入端在主板右侧标有―频率计‖处。模式选择为―A‖。短接―PIO48‖时,信号PIO48可用,如实验电路结构图NO.1中的PIO48。平时应该短路―PIO48‖。

(25)目标芯片万能适配座CON1/2 :在目标板的下方有两条80个插针插座(GW48-CK系统),其连接信号如附图1所示,此图为用户对此实验开发系统作二次开发提供了条件。对于GW48-GK/PK2/EK系统,此适配座在原来的基础上增加了20个插针,功能大为增强。增加的20插针信号与目标芯片的连接方式可参考―实验电路结构NO.5‖、附图11和第3节表格。GW48-EK系统中此20的个插针信号全开放。

(26)左下拨码开关:(仅GK/PK2/EK型含此开关)拨码开关的详细用法可参考实验电路结构NO.5图(附图7)。

(27)上拨码开关:(仅GK/PK2型含此开关)是用来控制数码管作扫描显示用的。当要将8个数码管从原来的重配置可控状态下向扫描显示方式转换时,可以将此拨码开关全部向下拨,然后将左下侧的拨码开关的―DS8使能‖向上拨。这时,由这8个数码管构成的扫描显示电路可附图12。

(28)ispPAC下载板:对于GW48-GK系统,其右上角有一块ispPAC模拟EDA器件下载板,可用于模拟EDA实验中对ispPAC10/20/80等器件编程下载用,详细方法请看光盘中:―模拟EDA实验演示‖的POWER POINT。

(29)8X8数码点阵:(仅GW48-GK型含此)在右上角的模拟EDA器件下载板上还附有一块数码点阵显示块,是通用共阳方式,需要16根接插线和两根电源线连接。详细方法请看―实验演示‖的POWER POINT。

(30)+/-12V电源开关:在实验板左上角。有指示灯。电源提供对象:1)与082、311及DAC0832等相关的实验;2)模拟信号发生源;3)GW48-DSP/DSP+适配板上的D/A及参考电源;此电源输出口可参见附图1。平时,此电源必须关闭!

(31)智能逻辑笔:(仅GK/PK2型含此)逻辑信号由实验板左侧的―LOGIC PEN INPUT‖输入。测试结果:

a、“高电平”:判定为大于3V的电压;亮第1个发光管;

b、“低电平”:判定为小于1V的电压;亮第2个发光管。

c、“高阻态”:判定为输入阻抗大于100K欧姆的输出信号;亮第3个发光管。注意,此功能具有智能化;

d、“中电平”:判定为小于3V,大于1V的电压;亮第4个发光管。

e、“脉冲信号”:判定为存在脉冲信号时;亮所有的发光管。(注意,使用逻辑笔时,clock0/clock9上不要接50MHz,以免干扰)。

(30)模拟信号发生源:(GK/PK2型含此)信号源主要用于DSP/SOPC实验及A/D高速采样用信号源。使用方法如下:

a、打开+/-12V电源;

b、用一插线将右下角的某一频率信号(如65536Hz)连向单片机上方插座―JP18‖的INPUT端;

c、这时在―JP17‖的OUTPUT端及信号挂钩―W A VE OUT‖端同时输出模拟信号,可用示波器显示输出模拟信号(这时输出的频率也是65536Hz);

e、实验系统右侧的电位器上方的3针座控制输出是否加入滤波:向左端短路加滤波电容;向右短路断开滤波电容;

f、此电位器是调谐输出幅度的,应该将输出幅度控制在0-5V内。

(32)JP13选择VGA输出:(仅GW48-GK/PK2含此)。将―ENBL‖短路,使VGA输出显示使能;将―HIBT‖短路,使VGA输出显示禁止,这时可以将来自外部的VGA显示信号通过JP12座由VGA口输出。此功能留给SOPC开发。

(33)FPGA与LCD连接方式:(仅PK2型含此)。由附图11的实验电路结构图COM可知,默认情况下,FPGA是通过89C51单片机控制LCD液晶显示的,但若FPGA中有Nios嵌入式系统,则能使FPGA直接控制LCD显示。方法是拔去此单片机(在右下侧),用连线将座JP22/JP21(LCD显示器引脚信号)各信号分别与座JP19/JP20(FPGA引脚信号)相连接即可。针对目标器件的型号,查表锁定引脚后,参考.\gwdvpb\H128X64液晶显示使用说明.doc 即可。

(34)JP23使用说明:(仅GW48-GK/PK2型含此)。单排座JP23有3个信号端,分别来自此单片机的I/O 口。

(35)使用举例:若模式键选中了―实验电路结构图NO.1‖,这时的GW48系统板所具有的接口方式变为:FPGA/CPLD端口PI/O31~28(即PI/O31、PI/O30、PI/O29、PI/O28)、PI/O27~24、PI/O23~20和PI/O19~16 ,共4组4位二进制I/O端口分别通过一个全译码型7段译码器输向系统板的7段数码管。这样,如果有数据

端口I/O32~39分别与8个发光二极管D8~D1相连,可作输出显示,高电平亮。还可分别通过键8和键7,发出高低电平输出信号进入端口I/049和48 ;键控输出的高低电平由键前方的发光二极管D16和D15显示,高电平输出为亮。此外,可通过按动键4至键1,分别向FPGA/CPLD的PIO0~PIO15输入4位16进制码。每按一次键将递增1,其序列为1,2,…9,A,…F。注意,对于不同的目标芯片,其引脚的I/O标号数一般是同GW48系统接口电路的―PIO‖标号是一致的(这就是引脚标准化),但具体引脚号是不同的,而在逻辑设计中引脚的锁定数必须是该芯片的具体的引脚号。具体对应情况需要参考第3节的引脚对照表。

第二节实验电路结构图

1.实验电路信号资源符号图说明

结合附图2,以下对实验电路结构图中出现的信号资源符号功能作出一些说明:

(1)附图2-1a是16进制7段全译码器,它有7位输出,分别接7段数码管的7个显示输入端:a、b、c、d、e、f和g;它的输入端为D、C、B、A,D为最高位,A为最低位。例如,若所标输入的口线为PIO19~16,表示PIO19接D、18接C、17接B、16接A。

附图2 实验电路信号资源符号图

(2)附图2-1b是高低电平发生器,每按键一次,输出电平由高到低、或由低到高变化一次,且输出为高电平时,所按键对应的发光管变亮,反之不亮。

(3)附图2A-1c是16进制码(8421码)发生器,由对应的键控制输出4位2进制构成的1位16进制码,数的范围是0000~1111,即^H0至^HF。每按键一次,输出递增1,输出进入目标芯片的4位2进制数将显示在该键对应的数码管上。

(4)直接与7段数码管相连的连接方式的设置是为了便于对7段显示译码器的设计学习。以图NO.2为例,如图所标―PIO46-PIO40接g、f、e、d、c、b、a‖表示PIO46、PIO45..PIO40分别与数码管的7段输入g、f、e、d、c、b、a相接。

(5)附图2-1d是单次脉冲发生器。每按一次键,输出一个脉冲,与此键对应的发光管也会闪亮一次,时间20ms。

(6)附图2-1e是琴键式信号发生器,当按下键时,输出为高电平,对应的发光管发亮;当松开键时,输出为高电平,此键的功能可用于手动控制脉冲的宽度。具有琴键式信号发生器的实验结构图是NO.3。

2.各实验电路结构图特点与适用范围简述

(1)结构图NO.0:目标芯片的PIO19至PIO44共8组4位2进制码输出,经外部的7段译码器可显示于实验系统上的8个数码管。键1和键2可分别输出2个四位2进制码。一方面这四位码输入目标芯片的PIO11~PIO8和PIO15~PIO12,另一方面,可以观察发光管D1至D8来了解输入的数值。例如,当键1控制输入PIO11~PIO8的数为^HA时,则发光管D4和D2亮,D3和D1灭。电路的键8至键3分别控制一个高低电平信号发生器向目标芯片的PIO7至PIO2输入高电平或低电平,扬声器接在―SPEAKER‖上,具体接在哪一引脚要看目标芯片的类型,这需要查第3节的引脚对照表。如目标芯片为FLEX10K10,则扬声器接在―3‖引脚上。目标芯片的时时钟输入未在图上标出,也需查阅第3节的引脚对照表。例如,目标芯片为XC95108,则输入此芯片的时钟信号有CLOCK0至CLOCK9,共4个可选的输入端,对应的引脚为65至80。具体的输入频率,可参考主板频率选择模块。此电路可用于设计频率计,周期计,计数器等等。

(2)结构图NO.1:适用于作加法器、减法器、比较器或乘法器等。例如,加法器设计,可利用键4和键3输入8 位加数;键2和键1输入8位被加数,输入的加数和被加数将显示于键对应的数码管4-1,相加的和显示于数码管6和5;可令键8控制此加法器的最低位进位。

(3)结构图NO.2:可用于作VGA视频接口逻辑设计,或使用数码管8至数码管5共4个数码管作7段显示译码方面的实验;而数码管4至数码管1,4个数码管可作译码后显示,键1和键2可输入高低电平。

(4)结构图NO.3:特点是有8个琴键式键控发生器,可用于设计八音琴等电路系统。也可以产生时间长度可控的单次脉冲。该电路结构同结构图NO.0一样,有8个译码输出显示的数码管,以显示目标芯片的32位输出信号,且8个发光管也能显示目标器件的8位输出信号。

(5)结构图NO.4:适合于设计移位寄存器、环形计数器等。电路特点是,当在所设计的逻辑中有串行2进制数从PIO10输出时,若利用键7作为串行输出时钟信号,则PIO10的串行输出数码可以在发光管D8至D1上逐位显示出来,这能很直观地看到串出的数值。

(6)结构图NO.5:此电路结构有较强的功能,主要用于目标器件与外界电路的接口设计实验。主要含以9大模块:

1.普通内部逻辑设计模块。在图的左下角。此模块与以上几个电路使用方法相同,例如同结构图NO.3的唯一区别是8个键控信号不再是琴键式电平输出,而是高低电平方式向目标芯片输入。此电路结构可完成许多常规的实验项目。

2.RAM/ROM接口。在图左上角,此接口对应于主板上,有1个32脚的DIP座,在上面可以插RAM,也可插ROM(仅GW48-GK/PK系统包含此接口)例如:RAM:628128;ROM:27C020、27C040、29C040等。此32脚座的各引脚与目标器件的连接方式示于图上,是用标准引脚名标注的,如PIO48(第1脚)、PIO10(第2脚)、OE控制为PIO62等等。注意,RAM/ROM的使能CS1由主系统左边的拨码开关―1‖控制。对于不同的RAM或ROM,其各引脚的功能定义不尽一致,即,不一定兼容,因此在使用前应该查阅相关的资料,

但在结构图的上方也列出了部分引脚情况,以资参考。

3.VGA视频接口。4.两个PS/2键盘接口。注意,对于GW48-CK系统,只有1个,连接方式是下方的PS/2口。

5.A/D转换接口。6.D/A转换接口。7.LM311接口。8.单片机接口。9.RS232通信接口。

注意,结构图NO.5中并不是所有电路模块都可以同时使用,这是因为各模块与目标器件的IO接口有重合:

1.当使用RAM/ROM时,数码管3、4、5、6、7、8共6各数码管不能同时使用,这时,如果有必要使用更多的显示,必须使用以下介绍的扫描显示电路。但RAM/ROM可以与D/A转换同时使用,尽管他们的数据口(PIO24、25、26、27、28、29、30、31)是重合的。这时如果希望将RAM/ROM中的数据输入D/A 中,可设定目标器件的PIO24、25、26、27、28、29、30、31端口为高阻态;而如果希望用目标器件FPGA 直接控制D/A器件,可通过拨码开关禁止RAM/ROM数据口。

RAM/ROM能与VGA同时使用,但不能与PS/2同时使用,这时可以使用以下介绍的PS/2接口。

2.A/D不能与RAM/ROM同时使用,由于他们有部分端口重合,若使用RAM/ROM,必须禁止ADC0809,而当使用ADC0809时,应该禁止RAM/ROM,如果希望A/D和RAM/ROM同时使用以实现诸如高速采样方面的功能,必须使用含有高速A/D器件的适配板,如GW AK30+等型号的适配板。RAM/ROM不能与311同时使用,因为在端口PIO37上,两者重合。

(7)结构图NO.6:此电路与NO.2相似,但增加了两个4位2进制数发生器,数值分别输入目标芯片的PIO7~PIO4和PIO3~PIO0。例如,当按键2时,输入PIO7~PIO4的数值将显示于对应的数码管2,以便了解输入的数值。

(8)结构图NO.7:此电路适合于设计时钟、定时器、秒表等。因为可利用键8和键5分别控制时钟的清零和设置时间的使能;利用键7、5和1进行时、分、秒的设置。

(9)结构图NO.8:此电路适用于作并进/串出或串进/并出等工作方式的寄存器、序列检测器、密码锁等逻辑设计。它的特点是利用键2、键1能序置8位2进制数,而键6能发出串行输入脉冲,每按键一次,即发一个单脉冲,则此8位序置数的高位在前,向PIO10串行输入一位,同时能从D8至D1的发光管上看到串形左移的数据,十分形象直观。

(10)结构图NO.9:若欲验证交通灯控制等类似的逻辑电路,可选此电路结构。

(11)当系统上的―模式指示‖数码管显示―A‖时,系统将变成一台频率计,数码管8将显示―F‖,―数码6‖至―数码1‖显示频率值,最低位单位是Hz。测频输入端为系统板右下侧的插座。

(13)实验电路结构图COM:附图11电路仅GW48-GK/PK2拥有,即以上所述的所有电路结构,包括―实验电路结构NO.0‖至―实验电路结构NO.B‖共11套电路结构模式为GW48-GK/PK2两种系统共同拥有(兼容),把他们称为通用电路结构。即在原来的11套电路结构模式中的每一套结构图中增加附图11所示的―实验电路结构图COM‖。例如,在GW48-PK2系统中,当―模式键‖选择―5‖时,电路结构将进入附图7所示的实验电路结构图NO.5外,还应该加入―实验电路结构图COM‖。这样,在每一电路模式中就能比原来实现更多的实验项目。

实验电路结构图COM‖中各标准信号(PIOX)对应的器件的引脚名,必须查第七节的表。

第三节:实验电路结构图

CLOCK0

CLOCK2CLOCK5CLOCK9目

标芯片F P G A /C P L D

HEX

PIO2PIO3PIO4PIO5PIO7PIO6D1

D2D3D4D5D6D7D8D16

D15

D14

D13

D12

D11

数码1

数码2数码3数码4数码5数码6数码7数码8NO.0

S P E A K E R

扬声器

实验电路结构图

译码器译码器译码器译码器译码器译码器译码器译码器

PIO15-PIO12

PIO11-PIO8PIO7--PIO2HEX 键1

键2

键3键4键5键6键7键8PIO47-PIO44

PIO43-PIO40PIO39-PIO36PIO35-PIO32PIO31-PIO28PIO27-PIO24PIO23-PIO20PIO19-PIO16

CLOCK9CLOCK5CLOCK2

CLOCK0

SPEAKER

扬声器

NO.1

PIO11-PIO8PIO15-PIO12PIO48

PIO49D15

D16HEX HEX

PIO32

PIO33

PIO34

PIO35

PIO36

PIO37

PIO38

PIO39

D1D2D3D4D5D6D7D8实验电路结构图

译码器

译码器

译码器

译码器

FPGA/CPLD 目标芯片1

2345678PIO3-PIO0

PIO7-PIO4HEX HEX 键1

键2

键3

键4

键5键6键7键8PIO39-PIO32PIO31-PIO28

PIO27-PIO24PIO23-PIO20PIO19-PIO16

附图3 实验电路结构图NO.0 附图4 实验电路结构图NO.1

CLOCK9

CLOCK5CLOCK2CLOCK0PIO48

PIO49D10D9

1

2345678NO.2

实验电路结构图

FPGA/CPLD 直接与7段显示器相接

PIO46-PIO40

PIO38-PIO32PIO30-PIO24PIO22-PIO16PIO46-PIO40 接 g, f, e, d, c, b, a

PIO38-PIO32 接 g, f, e, d, c, b, a

PIO30-PIO24 接 g, f, e, d, c, b, a 七段

PIO22-PIO16 接 g,f,e,d,c,b,a

PIO15-PIO12

PIO11-PIO8PIO7-PIO4PIO3-PIO0目标芯片

键1

键2键3键4键5键6键7键8译码器

译码器译码器译码器CLOCK9CLOCK5CLOCK2CLOCK0实验电路结构图

NO.3

译码器

译码器译码器译码器译码器译码器译码器译码器D9

D16D15D14D13D12D11D10

D8D7D6D5D4D3D2D1PIO8

PIO9

PIO10

PIO11

PIO12

PIO13

PIO14

PIO15

S P E A K E R

扬声器

1

2345678目标芯片FPGA/CPLD PIO0

PIO1PIO2PIO3PIO4PIO5PIO6PIO7键1

键2键3键4键5键6键7键8PIO15-PIO8PIO47-PIO44

PIO43-PIO40PIO39-PIO36PIO35-PIO32PIO31-PIO28PIO27-PIO24PIO23-PIO20PIO19-PIO16

附图5 实验电路结构图NO.2 附图6 实验电路结构图NO.3

CLOCK9

CLOCK5CLOCK2CLOCK0实验电路结构图

NO.4

目标芯片FPGA/CPLD

1

2

3

4

5

6

7

8

D16

D15

D14

PIO3-PIO0

PIO7-PIO4PIO15-PIO12HEX HEX HEX

单脉冲单脉冲键1

键2

键3

键4

键5

键6

键7

键8

PIO11

PIO9PIO8PIO10PIO47-PIO44

PIO43-PIO40PIO39-PIO36PIO35-PIO32

串行 输出显示

串行输出

CLEAR

CLOCK

LOAD

时钟计数器

D1

D2D3D4D5D6D7D8译码器

译码器译码器译码器CLOCK9CLOCK5CLOCK2CLOCK0D16D15D14D13D12D11D9D8

PIO47

D7PIO46

D6PIO45

D5PIO44

D4PIO43

D3PIO42

D2PIO41

PIO40

D1NO.7

实验电路结构图

S P E A K E R

扬声器

FPGA/CPLD

目标芯片1

2345678

PIO0

PIO2

PIO3

PIO4

PIO5

PIO6

PIO7单脉冲

单脉冲

单脉冲键1

键2

键3

键4

键5

键6

键7键8PIO47-PIO40PIO39-PIO36

PIO35-PIO32PIO31-PIO28PIO27-PIO24PIO23-PIO20PIO19-PIO16

译码器译码器译码器译码器译码器

译码器

附图7 实验电路结构图NO.4 附图8 实验电路结构图NO.7

CLOCK9

CLOCK5CLOCK2CLOCK0

FPGA/CPLD PIO10串行输入脉冲

D16

D15D1487654321NO.8

实验电路结构图

SPEAKER 扬声器

目标芯片

PIO39-PIO36PIO43-PIO40PIO47-PIO44

预置串行输入数

D

C

B

A

D

C

B

A

D1D2D3D4D5D6D7D8译码器

译码器译码器单脉冲

HEX HEX HEX 单脉冲PIO9

PIO11PIO8PIO15-12

PIO7-4PIO3-0

HEX HEX 键1

键2

键3

键4

键5

键6

键7

键8

附图9 实验电路结构图NO.8

附图10 实验电路结构图NO.9

VHDL实验报告

《创新实验》实验报告 —基于VHDL的编程和硬件实现

一、实验目的 1.熟悉和掌握硬件描述语言VHDL的基本语法及编写; 2.掌握软件Xilinx ISE 10.1的使用; 3.熟悉SDZ-6电子技术实验箱的使用; 4.了解节拍脉冲发生器等基本电路的实现; 5.了解八位二进制计数器的功能与设计; 6.学习键盘和七段数码管显示的控制和设计。 二、实验内容 1.Xilinx ISE 10.1软件的使用; 2.节拍脉冲发生器等基本电路的实现; 3.八位二进制计数器的实现 4.键盘扫描及显示的实现 三、实验器材 1、PC机 2、SDZ-6电子技术实验箱 3、正负5V电源 4、I/O接口线 四、软件的使用 在安装Xilinx10.1软件时,需要一个ID号,其实这个ID号是可以重复使用的,几个同学在官网注册后就可以共享ID号了。 安装完成之后就可以使用这个软件编写相应的VHDL的程序。 1.新建工程 File—>New Project 弹出下面的对话框 输入工程名后单击Next。然后根据本实验的实验箱进行以下设置。

以后的步骤一般都是单击Next(有些资料上会介绍有些这些步骤的具体功能,但对于本实验不必用到),最后单击Finish,完成新建一个工程。在窗口的左边会出现刚刚新建的工程,如下: 2.新建一个VHDL的源文件。 在上图中,右击工程选择New Source ,弹出如下对话框。

在对画框的左边选择VHDL Module,输入文件的名字(改名字最好是你定义的实体的名字)。单击Next。出现下面的对话框。 该对话框主要是对外部端口的编辑。可以直接跳过,即单击Next,在源文件上编辑端口。然后在接下来的对话框中单击Finish。完成建立一个源文件。窗口右边就会出现刚才编辑的源文件。 3.编写和编译代码 将事先编好的代码复制到源文件里,然后保存文件。 选中左边的文件名,在窗体的左边出现如下编辑文档内容。

VHDL实验报告03137

VHDL实验报告 60 庄炜旭实验三. 4位可逆计数器,4位可逆二进制代码-格雷码转换器设计 一.实验目的 学习时序电路的设计,仿真和硬件测试,进一步熟悉VHDL设计技术 1. 学习4位可逆计数器的设计 2. 学习4位可逆二进制代码-格雷码转换器设计 二.实验内容 设计4位可逆计数器,及4位可逆二进制代码-格雷码转换器,并仿真,下载。 [具体要求] 1.4位可逆计数器 a)使用CLOCK_50作为输入时钟,其频率为50MHz(对于频率大于50Hz的闪烁, 人眼会看到连续的光),因而,对其进行225的分频后,再用于时钟控制。(可 利用实验一) b)使用拨码开关SW17作为模式控制,置‘1’时为加法计数器,置‘0’时为减 法计数器,同时使用LEDR17显示SW17的值。 c)使用KEY3作为异步复位开关(按下时为0,不按为1),当为加法计数器时, 置“0000”,当为减法计数器时,置“1111”。 d)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高 位,LEDR0为低位。 2.4位可逆二进制代码――格雷码转换器 a)使用拨码开关SW17作为模式控制,置‘1’时为二进制代码―>格雷码转换, 置‘0’时为格雷码―>二进制代码,同时使用LEDR17显示SW17的值。 b)使用拨码开关SW3, SW2, SW1, SW0作为输入的被转换数,SW3为高位,SW0 为低位。 c)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高 位,LEDR0为低位。 三.管脚设定 SW[0]PIN_N25 SW[1]PIN_N26 SW[2]PIN_P25 SW[3] PIN_AE14 SW[17] PIN_V2 LEDR[0] PIN_AE23 LEDR[1] PIN_AF23 LEDR[2] PIN_AB21 LEDR[3] PIN_AC22 LEDR[17] PIN_AD12 KEY[3] PIN_W26

基于VHDL语言的EDA实验报告(附源码)

EDA 实验报告 ——多功能电子钟 姓名:张红义 班级:10级电科五班 学号:1008101143 指导老师:贾树恒

电子钟包括:主控模块,计时模块,闹钟模块,辅控模块,显示模块,蜂鸣器模块,分频器模块。 1.主控模块: 主要功能:控制整个系统,输出现在的状态,以及按键信息。 源代码: libraryieee; use ieee.std_logic_1164.all; useieee.std_logic_arith.all; useieee.std_logic_unsigned.all; entity mc is port(functionswitch,k,set,lightkey: in std_logic; chose21,setout: out std_logic; lightswitch:bufferstd_logic; modeout,kmodeout : out std_logic_vector(1 downto 0); setcs,setcm,setch,setas,setam,setah:outstd_logic); end mc; architecture work of mc is signalmode,kmode:std_logic_vector(1 downto 0); signal light,chose21buf:std_logic; signalsetcount:std_logic_vector(5 downto 0); begin process(functionswitch,k,set,lightkey) begin iffunctionswitch'event and functionswitch='1' then mode<=mode+'1'; end if; iflightkey'event and lightkey='1' then lightswitch<=not lightswitch; end if; if mode="01" thenchose21buf<='0'; else chose21buf<='1'; end if; ifk'event and k='1' then if mode="01" or mode="11" then kmode<=kmode+'1'; end if;end if; if set='1' then if mode = "01" then ifkmode="01" then setcount<="000001"; elsifkmode="10" thensetcount<="000010"; elsifkmode="11" then setcount<="000100";

VHDL实验报告

专用集成电路实验报告 13050Z01 1305024237 刘德文

实验一开发平台软件安装与认知实验 实验内容 1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9.2软件平台上完成设计 电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。下载芯片选择Xilinx公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。 2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译 码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。 源程序: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity ls74138 is Port ( g1 : in std_logic; g2 : in std_logic; inp : in std_logic_vector(2 downto 0); y : out std_logic_vector(7 downto 0)); end ls74138; architecture Behavioral of ls74138 is begin process(g1,g2,inp) begin if((g1 and g2)='1') then case inp is when "000"=>y<="00000001"; when "001"=>y<="00000010";

vhdl实验报告--蜂鸣器

VHDL 实验报告 一、实验目的 1、掌握蜂鸣器的使用; 2、通过复杂实验,进一步加深对VHDL语言的掌握程度。 二、实验原理乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让蜂鸣器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。 乐曲的12 平均率规定:每2 个八度音(如简谱中的中音1 与高音1)之间的频率相差1 倍。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音6)的频率为440Hz, 音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音I至高音1 之间每个音符的频率,如表所示。 音名频率/Hz 音名频率/Hz 音名频率/Hz 低音1 中音1 高音1 低音2 中音2 高音2 低音3 中音3 高音3 低音4 中音4 高音4 低音5 392 中音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 中音7 高音7 表简谱音名与频率的对应关系 产生各音符所需的频率可用一分频器实现, 由于各音符对应的频率多为非整数, 而分频系数又不能为小数, 故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低, 则由于分频系数过小, 四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。实际的设计应综合考虑两方面的因素, 在尽量减小频率误差的前提下取合适的时钟频率。实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会走调。 音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此, 要控制音符的音 长,就必须知道乐曲的速度和每个音符所对应的节拍数, 本例所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s 的话,那么一拍所应该持续的时间为秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。 本例设计的音乐电子琴选取40MHZ的系统时钟频率。在数控分频器模块,首先对时钟频率进行40分频,得到1MHZ的输入频率,然后再次分频得到各音符的频率。由于数控分频器 输出的波形是脉宽极窄的脉冲波, 为了更好的驱动蜂鸣器发声, 在到达蜂鸣器之前需要均衡占空比, 从而生成各音符对应频率的对称方波输出。这个过程实际上进行了一次二分频, 频率变为原来的二分之一即。 因此,分频系数的计算可以按照下面的方法进行。以中音1为例,对应的频率值为 523. 3Hz,它的分频系数应该为: 0.375MHZ 0.375 106 716 523.3 523.3

vhdl实验报告

福建农林大学计算机与信息学院 信息工程类 实验报告 2013年11 月13 日

实验项目列表

福建农林大学计算机与信息学院信息工程类实验报告 系:电子信息工程系专业:电子信息工程年级: 2010级 姓名:学号:实验课程: VHDL数字系统设计 实验室号:__ 田C407 实验设备号: 07 实验时间: 11.12 指导教师签字:成绩: 实验一数控分频器的设计 1.实验目的和要求 学习数控分频器的设计、分析和测试方法。 2.实验原理 信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例1所示。 数控分频器的仿真波形如图1所示:输入不同的CLK频率和预置值D,给出如图1的时序波形。 100.0μs200.0μs300.0μs400.0μs 图1 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns) 3.主要仪器设备(实验用的软硬件环境) 实验的硬件环境是: 微机一台 GW48 EDA实验开发系统一套 电源线一根 十芯JTAG口线一根 USB下载线一根 USB下载器一个 示波器 实验的软件环境是: Quartus II 9.0软件

4.操作方法与实验步骤 (1)创建工程,并命名位test。 (2)打开QuartusII,建立VHDL文件,并输入设计程序。保存为DVF. (3)选择目标器件。Acex1k—EP1K100QC208-3。 (4)启动编译。 (5)建立仿真波形图。 (6)仿真测试和波形分析。 (7)引脚锁定编译。 (8)编程下载。 (9)硬件测试 5.实验内容及实验数据记录 在实验系统上硬件验证例5-20的功能。可选实验电路模式1(第一章图4);键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz 或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。 6.实验数据处理与分析 1)实验代码 【例1】 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 = "11111111" THEN 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触发器输出取反

VHDL实验报告一2选1多路选择器

实验一 实验目的: 熟悉quartus的vhdl文本设计流程全过程,学习简单的组合电路的设计,多层次的电路设计,仿真和硬件测试 二、实验内容 内容(一)用vhdl语言设计2选1多路选择器 参考例3-1程序设计如下: library ieee; use mux21a is port (a,b,s:in bit; y: out bit); end entity mux21a; architecture one of mux21a is begin y<=a when s='0' else b; end architecture one 全程编译后软件提示0错误,3警告,可以继续下面仿真操作。 程序分析: 这是一个2选1多路选择器,a和b分别为两个数字输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。 时序仿真及分析: 时序仿真输入图: 时序仿真输出图: 时序分析: 由上面两图可以得知:当s=0时,y口输出a,当s=1时,y口输出b 下载和硬件测试: 引脚锁定图: 程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz 信号,clock2接8Hz信号。通过键一控制s,当键一进行切换时,明显能听到扬声器发出两种不同音调的声音。 实验内容(二)双二选一多路选择器设计

程序设计: library ieee; use mux21a is port (a,b,s:in bit; y: out bit); end entity mux21a; architecture one of mux21a is begin y<=a when s='0' else b; end architecture one; entity muxk is port (a1,a2,a3,s0,s1:in bit; outy:out bit); end entity muxk; architecture bhv of muxk is component mux21a port (a,b,s:in bit; y:out bit); end component; signal tmp: bit; begin u1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp); u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy); end architecture bhv; 全程编译后软件提示0错误,2警告 程序分析: 这是一个双2选1多路选择器,a1、a2和a3分别为两个数字输入端的端口名,s0、s1为通道选择控制信号输入端的端口名,outy为输出端的端口名。实体mux21a是一个2选一选通电路,实体muxk是元件的例化,其作用是将两个mux21a组合成一个3选1多路选择器。 时序仿真及分析: 时序仿真输入图 时序仿真输出图 时序分析: 从仿真出来的结果,我们不难发现,s0和s1做为a1、a2、a3的选通控制信号。当s0=0.、s1=0时,outy输出a1;当s0=0.、s1=1时,outy输出a2;当s0=1.、s1=0时,outy输出a1;当s1=1.、s2=1时,outy输出a3; 下载和硬件测试: 引脚锁定图

VHDL实验报告

VHDL实验报告 5080309563 李斌 实验三.4位可逆计数器,4位可逆二进制代码-格雷码转换器设计 [设计思路及步骤]: 一.需求: 设计4位可逆计数器,及4位可逆二进制代码-格雷码转换器,并仿真,下载。 [具体要求] 1.4位可逆计数器 a)使用CLOCK_50作为输入时钟,其频率为50MHz(对于频率大于50Hz的闪烁, 人眼会看到连续的光),因而,对其进行225的分频后,再用于时钟控制。(可 利用实验一) b)使用拨码开关SW17作为模式控制,置‘1’时为加法计数器,置‘0’时为减 法计数器,同时使用LEDR17显示SW17的值。 c)使用KEY3作为异步复位开关(按下时为0,不按为1),当为加法计数器时, 置“0000”,当为减法计数器时,置“1111”。 d)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高 位,LEDR0为低位。 2.4位可逆二进制代码――格雷码转换器 a)使用拨码开关SW17作为模式控制,置‘1’时为二进制代码―>格雷码转换, 置‘0’时为格雷码―>二进制代码,同时使用LEDR17显示SW17的值。 b)使用拨码开关SW3, SW2, SW1, SW0作为输入的被转换数,SW3为高位,SW0 为低位。 使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高位,LEDR0为低位。 二.变量解释: 4位可逆计数器: 1.clk为时钟输入,clkout为分频后的时钟,cnt为分频计数,ctr为SW17模式 控制,rst为KEY3异步复位开关,tem为输出结果的中间变量; 2.本实验的时钟输入为50MHz,定义为clk,为此设计时需要将其分频为50Hz, 需225分频,因此,代码中,需要有一个cnt作为一个225计数器,同时,定义 分频后的时钟为clkout; 3.建立process,检测key是否为0,为0则复位。否则,检测clkout,触发上升 沿则检测模式控制,对tem加1或减1,同时应检测是否达到最大或最小值, 达到最值则直接返回到最初值,否则继续操作; 4.最后,转换tem的值为相应的4位二进制数,并于LED上反映出来。 四位可逆二进制代码-格雷码转换器: 1.检测模式,进行相应的操作; 2.ctr为0则格雷码转换成二进制码;ctr为1则为二进制码转换为格雷码 [源代码]: 1)4位可逆计数器: library ieee; use ieee.std_logic_1164.all; entity cnt is

VHDL实验报告汇总

实验一4选一多路选择器 一:实验目的及实验环境 目的 1、熟悉ModelSim SE 6.5c的verilog 的文本设计流程,组合电路的设计、仿真和测试。 2、用verilog语言完成设计4选一多路选择器。 3、熟悉文本输入及仿真步骤。 4、初步了解可编程器件设计的全过程。 环境 1、P C 机一台 2、M odelSim SE 6.5c 二. 实验内容 1、用verilog语言完成设计4选一多路选择器, 2、用结构建模及数据流建模两种方法实现。 3、对于所设计的程序进行编译,检查纠错。 4、程序完善之后进行程序的仿真并进行波形的记录与分析 三.实验步骤 1、建立工程 2、添加文件到工程 3、编译文件 4、查看编译后的设计单元 5、将信号加入波形窗口 6、运行仿真 四.运行结果

五.总结 本次实验让我更加的熟悉modelsim使用方法,以及使用时应该注意的问题。在试验中也学习到了Verilog语法。在实验中我们应该注意verilog的格式要求,在用编程语言编程的时候,要自习留意语法标准,整理好逻辑思维的同时保证格式的正确。否则就会浪费大量的时间来完成实验。试验开始到结束这一过程中,我遇到了很多困难,后来都在同学的提醒和帮助下克服了。相信有了这次对这个语言和这个软件的接触,我们都有了更加深入的理解。 六.源代码 module mux41(a,b,c,d,s1,s0,out); input[1:0] a,b,c,d; input s1,s0; output[1:0] out; reg[1:0] out; always @(a or b or c or d or s 1 or s0) begin :mux41 case({s1,s0}) 2'b00: out<=a; 2'b01: out<=b; 2'b10: out<=c; 2'b11: out<=d; default: out=a; endcase end endmodule module sti; reg[1:0] a,b,c,d; reg s0,s1; wire[1:0] out; mux41 dtg(a,b,c,d,s0,s1,out); initial begin a=3'd0;b=3'd1;c=3'd2;d=3'd3; s0=0;s1=0; #100 a=3'd0;b=3'd1;c=3'd2;d= 3'd3;s0=0;s1=1; #100 a=3'd0;b=3'd1;c=3'd2;d= 3'd3;s0=1;s1=0; #100 a=3'd0;b=3'd1;c=3'd2;d= 3'd3;s0=1;s1=1; end endmodule

VHDL硬件描述语言实验报告

硬件描述语言实验附录 姓名:xxx 学号:xxx 指导教师:xxx 目录 硬件描述语言实验附录 (1) 实验1.三输入与门电路实验 (2) 实验2. 三—八译码器实验 (3) 实验3. D触发器实验 (4) 实验4. 分频器实验 (5) 实验5. 状态机实验 (8)

实验1.三输入与门电路实验 --三输入与门电路threeinput --姓名:王定 --学号:1306034248 --中北大学 LIBRARY IEEE; --调用库 USE IEEE.STD_LOGIC_1164.ALL;--库文件 -------------------------------------------------------------- ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入 B: IN STD_LOGIC; --输入端口,个位写入使能 C: IN STD_LOGIC; --输入端口,十位写入使能 CO: OUT STD_LOGIC); --输出端口,溢出标志 END ENTITY threeinput; --结束端口定义 -------------------------------------------------------------- ARCHITECTURE RTL OF threeinput IS--定义结构体 BEGIN PROCESS(A,B,C) IS --开始,必须带上 BEGIN CO<=A AND B AND C ; END PROCESS; END ARCHITECTURE RTL; --结束结构体 表1. 三输入与门电路VHDL实验代码 图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出

北邮数电VHDL实验报告

2009级数字电路实验报告 实验名称:EDA基础实验 学生姓名: 班级: 班内序号: 学号: 日期: 1.实验要求 【实验目的】 1.熟悉用QuartusII原理图输入法进行电路设计和仿真; 2.掌握QuartusII图形模块单元的生成与调用; 3.熟悉用VHDL语言设计组合逻辑电路和时序电路的方法; 4.熟悉用QuartusII文本输入法和图形输入法进行电路设计; 5.熟悉不同的编码及其之间的转换; 6.掌握触发器的逻辑功能及使用方法; 7.熟悉计数器、寄存器、锁存器、分频器、移位寄存器的设计方法 8.掌握VHDL语言的语法规范,掌握时序电路描述方法; 9.掌握多个数码管动态扫描显示的原理及设计方法。 【实验所用仪器及元器件】 1.计算机 2.直流稳压电源 3.数字系统与逻辑设计实验开发板 【实验内容】 1.用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。 2.用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功 能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信 号。

3.用3线-8线译码器(74LS138)和逻辑门设计实现函数F,仿真验证其功能,并下 载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 4.用VHDL语言设计实现一个3位二进制数值比较器,仿真验证其功能,并下载到实 验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 5.用VHDL语言设计实现一个4选1的数据选择器;一个8421码转换为格雷码的代码 转换器;一个举重比赛裁判器;一个带同步置位和同步复位功能的D触发器;一个 带异步复位的4位二进制减计数器;一个带异步复位的8421码十进制计数器;一 个带异步复位的4位自启动环形计数器;一个带控制端的8位二进制寄存器,当控 制端为‘1’时,电路正常工作,否则输出为高阻态;一个分频系数为12,分频输 出信号占空比为50%的分频器。仿真验证其功能,并下载到实验板测试。要求用拨 码开关和按键开关设定输入信号,发光二极管显示输出信号。(注:有几个不需要 下载到实验板测试) 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 a OF h_adder IS BEGIN so<= a XOR b; co<= a AND b; END;

VHDL实验报告一2选1多路选择器

实验目的: 熟悉quartus的vhdl文本设计流程全过程,学习简单的组合电路的设计,多层次的电路设计,仿真和硬件测试 二、实验内容 内容(一)用vhdl语言设计2选1多路选择器 参考例3-1程序设计如下: library ieee; use mux21a is port (a,b,s:in bit; y: out bit); end entity mux21a; architecture one of mux21a is begin y<=a when s='0' else b; end architecture one 全程编译后软件提示0错误,3警告,可以继续下面仿真操作。 程序分析: 这是一个2选1多路选择器,a和b分别为两个数字输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。 时序仿真及分析: 时序仿真输入图: 时序仿真输出图: 时序分析: 由上面两图可以得知:当s=0时,y口输出a,当s=1时,y口输出b 下载和硬件测试: 引脚锁定图: 程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz 信号,clock2接8Hz信号。通过键一控制s,当键一进行切换时,明显能听到扬声器发出两种不同音调的声音。 实验内容(二)双二选一多路选择器设计 程序设计: library ieee;

use mux21a is port (a,b,s:in bit; y: out bit); end entity mux21a; architecture one of mux21a is begin y<=a when s='0' else b; end architecture one; entity muxk is port (a1,a2,a3,s0,s1:in bit; outy:out bit); end entity muxk; architecture bhv of muxk is component mux21a port (a,b,s:in bit; y:out bit); end component; signal tmp: bit; begin u1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp); u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy); end architecture bhv; 全程编译后软件提示0错误,2警告 程序分析: 这是一个双2选1多路选择器,a1、a2和a3分别为两个数字输入端的端口名,s0、s1为通道选择控制信号输入端的端口名,outy为输出端的端口名。实体mux21a是一个2选一选通电路,实体muxk是元件的例化,其作用是将两个mux21a组合成一个3选1多路选择器。 时序仿真及分析: 时序仿真输入图 时序仿真输出图 时序分析: 从仿真出来的结果,我们不难发现,s0和s1做为a1、a2、a3的选通控制信号。当s0=0.、s1=0时,outy输出a1;当s0=0.、s1=1时,outy输出a2;当s0=1.、s1=0时,outy输出a1;当s1=1.、s2=1时,outy输出a3; 下载和硬件测试: 引脚锁定图 程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz

VHDL第一次实验报告

VHDL第一次实验报告 深圳大学实验报告 课程名称:EDA技术 实验项目名称:基本电路行为的描述 学院:信息工程学院 专业:电子信息工程 指导教师: 报告人:学号:班级: 2 实验时间: 实验报告提交时间:2014年5月9日 教务部制 实验内容:1 多路选择器(习题2.1)2 ROM(习题3.4)3 简易加法器(习题3.5)4 通用译码器(习题4.4)5 第五章习题5.1、5.5、5.6、5.7、5.8 实验要求:1.依次完成各电路功能的VHDL代码编写 2.完成相应电路仿真,并对仿真结果截图,截图中要求尽可能多的体现不同输入信号对应的输入结果 3.完成实验报告,并按时提交至Blackboard,实验报告见实验报告模板,要求按模板各项内容完成。4.特别提示:实验报告按模板内容逐项填写,要求有完整的VHDL代码、仿真测试文件(VHDL test bench)、仿真结果截图、仿真结果分析、实验结论(或对实验的总结、心得体会)等内容。实验过程及内容:2.1 多路选择器多路选择器的顶层电路如图P2.1所示。根据真值表,如果输入sel=“01”或者sel=“10”,那么输出将等于对应的某一输入(c=a或c=b).然而如果输入sel=“00”或者sel=“11”,那么输出将分别为‘0’和‘Z’(高阻)。(a)填写表格,完成下

面的代码。(b)是对你的解答给出相关的注释。(c)将代码编译后进行仿真,验证其正确性。实验完整VHDL代码:library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity mux is Port ( a : in STD_LOGIC_VECTOR(7 DOWNTO 0); b : in STD_LOGIC_VECTOR(7 DOWNTO 0); sel : in STD_LOGIC_VECTOR(1 DOWNTO 0); c : out STD_LOGIC_VECTOR(7 DOWNTO 0)); end mux; architecture example of mux is begin PROCESS (a,b,sel) begin IF (sel=\ c ‘U’); END IF; END PROCESS; end EXAMPLE; 仿真测试文件代码:LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY Test_Mux IS END Test_Mux; ARCHITECTURE behavior OF Test_Mux IS COMPONENT mux PORT( a : IN std_logic_vector(7 downto 0); b : IN std_logic_vector(7 downto 0); sel : IN std_logic_vector(1 downto 0); c : OUT std_logic_vector(7 downto 0) ); END COMPONENT; --Inputs signal a : std_logic_vector(7 downto 0) := (others => ‘0’); signal b : std_logic_vector(7 downto 0) := (others => ‘0’); signal sel : std_logic_vector(1 d ownto 0) := (others => ‘0’); --Outputs signal c : std_logic_vector(7 downto 0); -- No clocks detected in port list. Replace below with -- appropriate port name BEGIN -- Instantiate the Unit Under Test (UUT) uut: mux PORT MAP ( a => a, b => b, sel => sel, c => c ); -- Stimulus process stim_proc: process begin -- hold reset state for 100 ns. a<=\ b<=\ sel <=\ wait for 100 ns; sel <=\ wait for 100 ns; sel <=\ wait for 100 ns; sel <=\ wait for 100 ns; -- insert stimulus here wait; end process; END; 仿真结果:如图,当输入信号sel为“00”时,输出信号c为“00000000”;当输入信号sel为“01”时,输出信号c等于a即为“10101010”;当输入信号sel为“10”时,输出信号c等于b即为“11110000”;当输入信号sel 为其他情况时,输出信号c等于自己设定的值,在此处即为“U”。习题3.4 ROM 试用1*1维常数来实现只读存储器ROM(read-only memory),假设一个ROM由许多深度为8,位宽为4的块组成。提示:首先建立一个名为rom的数组,然后定义一个rom类型的信号来实现ROM,用常数值填充到ROM块中:CONSTANT my_rom:rom:=(values);。实验完整VHDL代码:library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity ROM is Port ( addr :

VHDL乐曲演奏实验报告

文档从互联网中收集,已重新修正排版,word格式支持编辑,如有帮助欢迎下载支持。设计性实验报告 班级: 姓名(学号): 实验项目名称:乐曲演奏实验 实验项目性质:设计性 实验所属课程:EDA基础 实验室(中心): 指导教师: 实验完成时间:2009 年12 月13 日

教师评阅意见: 签名:年月日实验成绩: 一、实验目的 1、熟悉QuartusII 软件的使用。 2、熟悉EDA实验开发系统的基本使用。 3、学习VHDL基本单元电路的设计应用。进一步掌握EDA的多层次设计方法。 4、学习音乐发生器的设计。 二、实验内容及要求 1、实验内容 利用可编程逻辑器件FPGA,设计乐曲硬件电路,可自动演奏乐曲。 2、实验要求 要求能够演奏出《友谊天长地久》的曲调或可另选一段较完整的曲调(扩展要 求:能够从数码管上显示出当前曲调的简谱和频率),我们组演奏出的是实验 要求上的《友谊天长地久》曲调。 三、实验原理 1、乐曲硬件电路产生音乐是和音乐频率和音乐的持续时间有关;音符的持续时间需 根据乐曲的速度和每个音符的节拍数来确定。其简谱中音符和频率的关系如下: 2、该演奏电路演奏的乐曲是《友谊天长地久》片段,其最小的节拍为1拍,将1拍

的时长定位0.25S,则只需要再提供一个4hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。对于占用时间较长的节拍,(一定是节拍的整数倍),如全音符为4拍,2/4音符为2拍,1/4音符为1拍。 3、乐曲硬件演奏电路系统主要有数控分频器和乐曲存储模块两个部分组成,其余还有 音乐节拍发生器等等。数控分频器对FPGA 的基准频率进行分频,得到与各个音节对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中存放一个乐曲曲谱真值表(实验中用的ROM存储),由一个计数器来控制此真值表的输出,而由计数器的技术时钟信号作为乐曲节拍控制信号。 4、要求演奏时能循环进行,必须需另外设置一个时长计数器,当乐曲演奏完成时,保 证能自动从头开始演奏。该计数器控制真值表按顺序输出简谱。 四、实验仪器、材料 计算机一台、GW48 EDA/SOPC实验箱一台 QuartusII软件、实验箱连接线一根 五、方案设计 这个实验中采用层次化的设计思路,因此我们把此乐曲硬件演奏电路分为3个主要模块,即音乐发生器NoteTabs模块,音符译码电路Tonetaba模块,数控分频Speakera 模块。分好层次之后,编写每个模块的程序,分别生成项目符号,最后把生成的个项目符号用原理图的方式连接起来,然后编译、下载即可。由图例表示如下: 此实验设计中,我主要负责音乐发生器NoteTabs模块(ROM的定制过程)和最后的连接原理图部分。 六、实验过程及原始记录 1、音乐节拍发生器NoteTabs模块 这个模块用FPGA的片内ROM存放乐曲的简谱真值表,由一个二进制计数器为乐曲数据存储ROM的地址发生器随着NoteTabs中计数器按时钟频率做加法计数时,乐曲数据存储器ROM中的音符数据,将从ROM中的输出口输向音符译码电路Tonetaba ,所存储的乐曲就开始连续自然地演奏起来。

VHDL实验报告

项目一数据选择器 一、实验与设计要求 1.熟悉MAX+PLUS II的编译环境,掌握该集成环境各个菜单项的使用; 2.了解MAX+PLUSII的VHDL程序设计输入方法,初步了解该软件的仿真环境; 3.初步运用VHDL编程,体会硬件描述语言的先进性; 4.理解VHDL语言的并发执行的特点; 5.熟悉VHDL语法 6. 按照如下图示,设计一个四路的数据选择器,该电路能将 四组不同的数据有选择的输出,每一组数据的宽度为4,输出那一组数据由选择开关决定,如下表: 辑图如下: S0 S1 二、实验与设计方法 1.进入MAX+PLUSII软件之前,在E盘上新建一个工作目录\lyung。 2.进入MAX+PLUSII文本编辑器,编写VHDL程序,并保存文件至\lyung\ mux41.vhd: 3. 将工程指向当前文件并编译当前文件。 4. 建立波形仿真文件,设置输入、输出端口及输入端口的信号

波形,保存波形仿真文件。 5. 进入仿真器工作环境,查看波形仿真结果。 6. 选择器件, 为电路端口分配FPGA器件引脚。 7. 进行第二次编译(包括逻辑综合和器件工艺映射),生成目 标文件(*.sof等)。 8.将目标文件下载至FPGA器件。 9.在实验台上进行实际操作,验证设计的正确性。 三、实验与设计结果 通过实验,初步熟悉了MAX+PLUS II的编译环境,并掌握该集成环境各个菜单项的使用。 实验过程中,了解了MAX+PLUSII的VHDL程序设计输入方法,初步运用VHDL编程,成功的按照实验要求设计了程序的VHDL源码(见附件1),熟悉了VHDL语法,理解了VHDL语言的并发执行的特点;并进行了仿真实验(仿真实验截图见图4-1),初步了解该软件的仿真环境,并成功的将文件烧入实验平台,成功通过了测试(实验平台截图见图4-2)。 四、程序源码及实验截图 4-0、VHDL源码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (a,b,c,d: IN STD_LOGIC_VECTOR (3 DOWNTO 0); s1,s0: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0));

VHDL数字时钟实验报告

VHDL数字时钟设计 一、实验目的: 进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。同时,在已有知识的基础上,简单综合编写程序,仿制简单器械。 二、实验环境: PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件。 三、设计要求: 运用VHDL语言编写一个数字钟,具体要求: 1. 具有时、分、秒计数的十进制数字显示功能,以24小时循环计时。 2. 具有手动调节小时,分钟的功能。 3. 具有闹钟的功能,能够在设定的闹钟时间发出闹铃声。 四、实验步骤: 1. 定义输入输出信号量 port( clk:in std_logic; ---时钟 speak:out std_logic; ---铃

dout:out std_logic_vector(7 downto 0); ---晶体管显示 setclk:in std_logic_vector(2 downto 0); ---操作按钮 d1,d2,d3,d4,d5,d6: out std_logic); ---六个晶体管 2. 定义结构体中的信号量 signal sel:std_logic_vector(2 downto 0); signal hou1:std_logic_vector(3 downto 0); --时分秒的个位和十位 signal hou2:std_logic_vector(3 downto 0); signal min1:std_logic_vector(3 downto 0); signal min2:std_logic_vector(3 downto 0); signal seth1:std_logic_vector(3 downto 0); signal seth2:std_logic_vector(3 downto 0); signal setm1:std_logic_vector(3 downto 0); signal setm2:std_logic_vector(3 downto 0);

相关主题
相关文档 最新文档