FPGA实验报告北航电气技术实验_北航fpga实验报告

2020-02-27 其他范文 下载本文

FPGA实验报告北航电气技术实验由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“北航fpga实验报告”。

FPGA电气技术实践

实验报告

院(系)名称 专业名称 学生学号 学生姓名 指导教师

宇航学院

飞行器设计与工程(航天)

XXXXXXXX

XXXXXX

XXXX

2017年11月XX日

`

` 实验一

四位二进制加法计数器与一位半加器的设计 实验时间:2017.11.08(周三)晚

实验编号20

一、实验目的1、熟悉QuartusII的VHDL的文本编程及图形编程流程全过程。

2、掌握简单逻辑电路的设计方法与功能仿真技巧。

3、学习并掌握VHDL语言、语法规则。

4、参照指导书实例实现四位二进制加法计数器及一位半加器的设计。

二、实验原理

.略

三、实验设备

1可编程逻辑实验箱EP3C55F484C8 一台(包含若干LED指示灯,拨码开关等)2计算机及开发软件QuartusII 一台套

四、调试步骤

1四位二进制加法计数器

(1)参照指导书实例1进行工程建立与命名。(2)VHDL源文件编辑

由于实验箱上LED指示灯的显示性质为“高电平灭,低电平亮”,为实现预期显示效果应将原参考程序改写为减法器,且”q1

由于参考程序中的rst清零输入作用并未实现,所以应将程序主体部分的最外部嵌套关于rst输入是否为1的判断,且当rst为1时,给四位指示灯置数”1111”实现全灭,当rst为0时,运行原计数部分。

(3)参照指导书进行波形仿真与管脚绑定等操作,链接实验箱并生成下载文件(4)将文件下载至实验箱运行,观察计数器工作现象,调试拨动开关查看是否清零。可以通过改变与PIN_P20(工程中绑定为clk输入的I/O接口)相连导线的另一端所选择的实验箱频率时钟的输出口位置,改变LED灯显示变化频率。

并且对照指导书上对实验箱自带时钟频率的介绍,可以通过改变导线接口转换输入快慢,排查由于clk输入管脚损坏而可能引起的故障。

` 2一位半加器

(1)参照指导书实例1进行工程建立与命名。

(2)图形源文件编辑:由于实验箱上LED指示灯的显示性质为“高电平灭,低电平亮”,为实现预期显示效果应将原电路图中两个输出管脚与非门串联以实现原参考输出“高电平亮,低电平灭”。

(3)参照指导书进行波形仿真与管脚绑定等操作,链接实验箱并生成下载文件(4)将文件下载至实验箱运行,观察半加器工作现象,调试拨动开关查看进位与置数指示是否正常工作。

五、实验现象

1.四位二进制加法计数器

SW1下拨为0时,四个LED指示灯可以对输入脉冲从”0000”到”1111”进行十六位循环计数(其中亮为1,灭为0)。SW1上拨为1时可以实现四个LED灯保持全灭清零。且四位二进制加法计数器功能成功实现

2.一位半加器

SW1与SW2输入分别为”00”、”01”、”10”、”11”时,进位指示与置数指示灯分别显示”00”、”01”、”01”、”10”(其中亮为1,灭为0)。且一位半加器功能成功实现。

六、实验代码

1四位二进制加法计数器(已修改)

entity count4 is

port(clk:in std_logic;--waishizhong,fpga_ex2_6

rst:in std_logic;--F1 pin-ab15

q:out std_logic_vector(3 downto 0));--led4-1

end;architecture b1 of count4 is

signal q1:std_logic_vector(3 downto 0);

begin

proce(clk,rst)

begin

if(rst='0')then

if(clk'event and clk='1')then q1

end if;

else q1

end if;

end proce;`

q

七、结果分析

1若在加载运行文件后实验箱上无反应,可以通过更换不同频率输入管脚查看是否为实验箱自带时钟的故障。

2实验箱上LED显示灯与设计逻辑相反时可以通过修改程序逻辑或给电路图添加非门实现正逻辑显示。

` 实验二

16×16LED点阵四字循环显示 实验时间:2017.11.08(周三)晚

实验编号20

一、实验目的1、掌握VHDL编程技巧和各种输入输出显示方法。

2、学习并分析指导书中实例,从中发现感兴趣的题目,并以此自设计一个有内容,功能稍复杂的主、子程序综合应用例程,实现调试与验证。

3、实现LED点阵“高山仰止”四字清晰循环显示。

二、实验原理

.1 LED显示原理

16×16扫描LED点阵的工作原理同8位扫描数码管类似,其结构示意图(图1)与等效电路图(图2)如下。它有16个共阴极输出端口,每个共阴极对应有16个 LED显示灯,所以其扫描译码地址需4位信号线(管脚对应COL1-COL4),从右起为第一列且COL1-4对应”0000”。其汉字扫描码由16位段地址(从下至上管脚对应ROW1-ROW16)输入。本设计选用的LED列扫描,汉字信号行输入的方式,显示完整汉字。

图1 16×16LED点阵 图2 16×16点阵LED等效电路

列循环扫描,通过对每一列的扫描来完成对字母的现实,本设计为使列扫描符合视觉暂留要求,扫描频率至少大于16×8=128Hz,周期小于7.8ms,以此给人以连续的感觉。汉字的信息储存

用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。第一步是在程序中建立汉字数据库。第二步是在扫描模块的控制下,配合列扫描的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一个如(图3)所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,汉字取模可由专用软件进行。

`

图3 16*16点阵显示模块

由于本实验箱为从右至左依次对应”0000”列到”1111”列,从下至上为最高位到最低位,于平时习惯的认字方向相反,所以注意在逐列扫描的设计中要对字取“反模”。

例如要在右边起第2列的从上到下数2、4、6、8行亮,则列编号为”0001”、行输入为”***0”就可以实现了。

3延时环节

为使汉字不断地循环显示,并且使每个汉子显示后停留,就需要在中间加一定的延时和循环环节。在这一环节中,可以通过修改每个显示和停留周期包含的总时钟脉冲数值来控制每个字的显示时间,运用状态机设计方法给四个汉字对应的不同输入状态进行编码,即可使汉字依次清晰显示。

三、实验设备

1可编程逻辑实验箱EP3C55F484C8 一台(包含16×16LED点阵一组等)2计算机及开发软件QuartusII 一台套

四、调试步骤

1建立工程,命名为ledgrq1616。建立VHDL程序文件命名为1ed1616grq.vhd。2按照第六部分原程序输入代码,并按所示表格绑定管脚。编写程序及绑定管脚时时注意第二部分中所叙述的扫描显示顺序以及对应取反字模的方法。

3编译无误后开启实验箱,生成.sof传输文件并下载至实验箱,确保运行模式为1,且CPRL_SW拨码开关为”00XX”。

4观察实验箱上现象,通过改接不同频率的脉冲输入管脚或改变每个字符停留周期包含的总脉冲数来保证有足够快的扫描频率与大约每个字大约一秒多的充足停留时间,并查看是否有“高山仰止”四字依次有停顿的清晰的循环显示。

五、实验现象

当时钟输入线接FRQH_Q2(3000000Hz)管脚时,设定每个周期为5000000个脉冲时,` 实现“高山仰止”在16×16LED点阵上清晰循环显示。

六、实验代码

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led1616grq is port(clk: in std_logic;--时钟

data: out std_logic_vector(15 downto 0);--行输入

addrs: out std_logic_vector(3 downto 0));--列地址 end led1616grq;

architecture chw_arc of led1616grq is signal fenpin:std_logic_vector(1 downto 0);--分频信号 signal ad:std_logic_vector(3 downto 0);--地址中转信号 begin

proce(clk)--产生一个大约1s的分频信号模块

variable cnt:integer:=0;

variable tmp:std_logic_vector(1 downto 0);

begin

if clk'event and clk='1' then

if cnt

cnt:=cnt+1;

else

cnt:=0;

if tmp=“11” then

tmp:=“00”;

else

tmp:=tmp+1;

end if;

end if;

end if;

fenpin

proce(clk)--送16位地址程序

variable js:integer:=0;

variable cnt:std_logic_vector(3 downto 0);

begin

if clk'event and clk='1' then

if js

js:=js+1;

else

js:=0;`

if cnt=“1111” then

cnt:=“0000”;

else cnt:=cnt+1;

end if;

end if;

end if;ad

end proce;proce(fenpin,ad)

begin

case fenpin is--besure to get the opposite model of the word--and exchange the hight 8bit to the low 8bit

--then write begin 1111 to 0000

when “00”=>

case ad is

--”高”的字模

when “0000”=>datadata

when “0010”=>data

when “0011”=>data

when “0100”=>data

when “0101”=>data

when “0110”=>data

when “0111”=>data

when “1000”=>data

when “1001”=>data

when “1010”=>data

when “1011”=>data

when “1100”=>data

when “1101”=>data

when “1110”=>data

when “1111”=>data

when others=>null;

end case;

when “01”=>

case ad is

when “0000”=>data

when “0001”=>data

when “0010”=>data

when “0011”=>data

when “0100”=>data

when “0101”=>data

when “0110”=>data

when “0111”=>data

when “1000”=>data

when “1001”=>data

when “1010”=>data

when “1011”=>data

when “1100”=>data

when “1101”=>data

when “1110”=>data

when “1111”=>data

when others=>null;

end case;

when “10”=>

case ad is

when “0000”=>data

when “0001”=>data

when “0010”=>data

when “0011”=>data

when “0100”=>data

when “0101”=>data

when “0110”=>data

when “0111”=>data

when “1000”=>data

when “1001”=>data

when “1010”=>data

when “1011”=>data

when “1100”=>data

when “1101”=>data

when “1110”=>data

when “1111”=>data

when others=>null;

end case;

when “11”=>

case ad is

when “0000”=>data

when “0001”=>data

when “0010”=>data

when “0011”=>data

when “0100”=>data

when “0101”=>data

when “0110”=>data

when “0111”=>data

when “1000”=>data

when “1001”=>data

when “1010”=>data

when “1011”=>data

when “1100”=>data

when “1101”=>data

when “1110”=>data

when “1111”=>data

when others=>null;

end case;

when others=>null;

end case;end proce;addrs

管脚绑定如下:

七、结果分析

设备调试与程序调试一样均为FPGA目标器件功能实现的必须工作,根据加载后实际显示情况,同样可以反推出QuartusII无法直接报错的引脚绑定方面的问题以及程序书写逻辑问题,实验中具体出现的情况如下:

(1)显示为一团不断闪烁的重叠形状 原因:可能为间隔时间太短 措施:应增大间隔周期数,延长停顿

`(2)字符形状与设计不同/错位

原因:如果为行顺序错位或乱序,但每一列仍为从右至左扫描,可能为ROW1-15管脚绑定错位:如果为列出现顺序及显示正确但位置错位,可能为CLK1-3管脚绑定错位;上述两种情况也可同时发生。

措施:将时钟输入频率放缓至可以看清每一列出现的顺序位置及显示内容,与所设计的字模对照,判断是哪几个ROW管脚及CLK错位,重新绑定即可。

(3)实验箱开启后毫无显示

原因:可能是工作模式的拨码开关并非”00XX”,或时钟管脚故障。

措施:选用其他频率的管脚试接;若排除管脚问题,查看模式显示数码管数值是否为1,如不是,改变工作模式,重新加载文件。

` 实验三

蜂鸣器/扬声器电子音乐演奏

实验时间:2017.11.15(周三)晚

实验编号20

一、实验目的1、熟练掌握QuartusII平台各模块操作及实验箱调试方法。

2、用元件例化语句调用方式,任意自选题设计一个有内容,功能较复杂的主、子程序综合应用的多模块集成例程,并实现调试与验证。

3、实现电子音乐《天空之城》的主旋律循环播放,并通过LED灯指示音符。

二、实验原理

.1、电子音符演奏

乐曲硬件电路产生音乐是和音乐频率和音乐的持续时间有关;音符的持续时间需根据乐曲的速度和每个音符的节拍数来确定。设计所用简谱及音符和频率的关系如下:

2、演奏节拍控制

该演奏电路演奏的乐曲是《天空之城》,其最小的节拍为1拍,将1拍的时长定位0.25S,则只需要再提供一个4Hz的时钟频率即可产生1拍的时长(5Hz由24MHz的基准频率分频产生),对于占用时间较长的节拍,(一定是节拍的整数倍),如全音符为4拍,2/4音符为2拍,1/4音符为1拍。

3、演奏电路模块

乐曲硬件演奏电路系统主要有音调分频器和乐曲存储模块两个部分组成,其余还有音乐节拍发生器等等。音调分频器对24MHz(由基准频率产生)的频率进行分频,得到与各个音节对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中写入一个乐曲曲谱真值序列,由一个计数器来控制此序列的输出,而由计数器的计` 数时钟信号作为乐曲节拍控制信号。

4程序设计思路

实验中采用层次化设计思路,音乐发生器的设计包括四个模块:时钟分频模块、自动演奏模块、音符显示模块、音调分频模块。分好层次之后,编写每个模块的程序。

时钟分频模块通过基准时钟频率clk(24MHz)产生两个时钟信号。自动演奏模块接收4hz的时钟信号,输出音调代码。显示模块利用音调代码查找并输出对应LED灯显示情况。同时将音调对应的给8盏LED指示灯,分别显示高中低音符。音调分频模块接收音调代码对应的分频系数,并据此分频,将对应频率的信号输出给扬声器供其发声。

三、实验设备

1可编程逻辑实验箱EP3C55F484C8 一台(含蜂鸣器、扬声器、若干LED灯等)2计算机及开发软件QuartusII 一台套

四、调试步骤

1建立工程,命名为grqbeep01。建立VerilogHDL程序文件命名为grqbeep01.v。2按照第六部分原程序输入代码,并按所示表格绑定管脚。

3编译无误后开启实验箱,将时钟输入管脚P20接Q0(24000000Hz)。

4生成.sof传输文件并下载至实验箱,确保运行模式为3,且CPRL_SW拨码开关为”0110”。

5观察实验箱上现象,确定蜂鸣器与扬声器的器件使用设定方法,对比其效果差异。

五、实验现象

1跳线BZ1未调整时

下载完毕,听到完整的由蜂鸣器播放的循环《天空之城》音乐,可是声音很小,LED指示灯显示没有错误。

2跳线BZ1由23调整到12时

下载测试,听到声音洪亮的循环播放的《天空之城》音乐,并且音调很好,数码管显示音符正常,实现预期功能。

六、实验代码

`timescale 1ns / 1ps module grqbeep01(clk,beep,led);input clk;//时钟管脚

` output beep;//蜂鸣器管脚 output [7:0]led;//led指示管脚 reg beep;reg [22:0]i;reg clk_4hz;reg [7:0]led;

reg [16:0]count,div_num;reg [6:0]music;//以下为主体

always@(posedge clk)//4hz生成部分

begin if(i==23'h47868c)begin i

clk_4hz=~clk_4hz;end else i=i+1'b1;end

always@(posedge clk_4hz)begin

if(music==7'd122)//总共的音符节拍数 music

music

if(count==div_num)begin

count

count

7'd61:div_num=M6;7'd62:div_num=M7;7'd63:div_num=H1;7'd64:div_num=H1;7'd65:div_num=H1;7'd66:div_num=M7;7'd67:div_num=H1;7'd68:div_num=H1;7'd69:div_num=H3;7'd70:div_num=H3;7'd71:div_num=M7;7'd72:div_num=M7;` 7'd73:div_num=M7;7'd74:div_num=M7;7'd75:div_num=M7;7'd76:div_num=M7;7'd77:div_num=M3;7'd78:div_num=M4;7'd79:div_num=M6;7'd80:div_num=M6;7'd81:div_num=M6;7'd82:div_num=M5;7'd83:div_num=M6;7'd84:div_num=M6;7'd85:div_num=H1;7'd86:div_num=H1;7'd87:div_num=M5;7'd88:div_num=M5;7'd89:div_num=M5;7'd90:div_num=M5;7'd91:div_num=M5;7'd92:div_num=M5;7'd93:div_num=M2;7'd94:div_num=M3;7'd95:div_num=M4;7'd96:div_num=M4;7'd97:div_num=H1;7'd98:div_num=H1;7'd99:div_num=H1;7'd100:div_num=M7;7'd101:div_num=H1;7'd102:div_num=H2;7'd103:div_num=H2;7'd104:div_num=H3;7'd105:div_num=H3;7'd106:div_num=H1;7'd107:div_num=H1;7'd108:div_num=H1;7'd109:div_num=M7;7'd110:div_num=M6;7'd111:div_num=M6;7'd112:div_num=M7;7'd113:div_num=M7;7'd114:div_num=M5;7'd115:div_num=M5;7'd116:div_num=M6;` 7'd117:div_num=M6;7'd118:div_num=M6;7'd119:div_num=M6;7'd120:div_num=M6;7'd121:div_num=M6;endcase end

always@(div_num)//定义每一种音符的LED指示方案

begin case(div_num)

L5,H5:led=8'b1111_1111;L6,H6:led=8'b0111_1111;L7,M1:led=8'b0011_1111;M2,M3:led=8'b0001_1111;M4,L4,H4,M5:led=8'b0000_1111;M6,M7:led=8'b0000_0111;H1,L1:led=8'b0000_0011;H2,L2:led=8'b0000_0001;H3,L3:led=8'b0000_0000;default: led=8'bx;endcase end endmodule 管脚绑定如下:

七、结果分析

1实验指导书由于篇幅有限,并未介绍全部硬件的管脚连接与使用方法,但是实验室中的完整实验箱说明书可以查阅到所有硬件资料。例如本实验中,指导书上只是概略提及了模式3中有BZSP接口可以实现蜂鸣器/扬声器放音,却并未提及调用切换方法,在老师帮助下在实验箱完整说明书中找到BZ1跳线使用方法,最终实现扬声器响亮播放。

2实验中的实际运行输入时钟频率必须与程序设计频率完全一致,设计程序也要优先参考实验箱所提供的自身时钟,否则输出音调和分频后的输出节拍均会因基准频率不符而有明显变化,可能有完全变调或频率过低而声音失真的情况。

`

实验感想

本次实验前后时间跨度有三周,从中收获的不仅仅是指导书中的一种新的Ada类编程语言的使用方法,更是一种对于短时间内接纳新的理论并迅速结合已知储备,实现实践运用与二次创新的能力锻炼。

能够借此机会下定决心,实现很久之前就有的学习Verilog的目标,更加深刻感受到C类编程语法的强大之处,同时也再一次锻炼了查找学习资源与阅读自学的能力。

为了能够深刻学习并学以致用,以上三个实验只是成果的一小部分,关于TFT_LCD以及LCD1602的驱动控制,以及Verilog语法规范与设计思路所读的40多篇文献,与两本课本,调试的17组程序,虽然来不及在课堂上展示,但是在我自己购置的手册齐全的DJ51单片机与我的TMS320F28335的DSP开发板上,均实现了非常令人喜悦的显示效果。而且实际上我所缺的,不能很方便找到的资源,其实就是那本完整的硬件说明书,但是至于其他,收获惊喜的比想象多了不少。对于硬件控制设计的理解也从大二的“仅仅是单片机”“不就是驱动个电机吗”,有了更多的深入的思考。

毕竟,“高山仰止,景行行止,虽不能至,心向往之”。

各种编程语言与平台,最终都是用不同的方式叙述同一种逻辑。编程的使用,只是让构思的逻辑与想法最快生成可以感受到的成果的途径,是表达的工具,也是最基础的链接理论到实物的媒介,但是其中最不可替代的只是一直存在的想法而已。

`

《FPGA实验报告北航电气技术实验.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
FPGA实验报告北航电气技术实验
点击下载文档
相关专题 北航fpga实验报告 实验报告 北航 电气 北航fpga实验报告 实验报告 北航 电气
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文