北航FPGA实验报告Word格式.docx

上传人:b****6 文档编号:19368615 上传时间:2023-01-05 格式:DOCX 页数:22 大小:39.01KB
下载 相关 举报
北航FPGA实验报告Word格式.docx_第1页
第1页 / 共22页
北航FPGA实验报告Word格式.docx_第2页
第2页 / 共22页
北航FPGA实验报告Word格式.docx_第3页
第3页 / 共22页
北航FPGA实验报告Word格式.docx_第4页
第4页 / 共22页
北航FPGA实验报告Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

北航FPGA实验报告Word格式.docx

《北航FPGA实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《北航FPGA实验报告Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

北航FPGA实验报告Word格式.docx

instd_logic;

q:

outstd_logic_vector(3downto0));

endentityerjinzhi;

architecturebhvoferjinzhiis

signalq1:

std_logic_vector(3downto0);

begin

process(rst,clk)

begin

if(rst='

0'

)then

q1<

="

0000"

;

elsif(clk'

eventandclk='

1'

=q1+1;

endif;

endprocess;

q<

=q1;

endarchitecturebhv;

(2)管脚分配

(3)实验操作

①输入信号clk时钟→把FPGA_EA2_P6(Pin_P20)用导线与(FRQ_Q211Hz)连接、rst清零→N18(SW-1)、输出信号q3→U12(LED1)、q2→V12(LED2);

q1→V15(LED3);

q0→W13(LED4)。

②把输入信号rst设为“1”、clk时钟(FRQ_Q211Hz)用导线与(FRQ_Q211Hz)连接。

(4)实验现象

输出结果信息为第一、二、三、四个发光二极管按照0000→0001→……→1111循环显示,符合实验要求。

(该实验板上低电平为“1”)

2、半加器

(1)实验原理图

逻辑分析:

输入信号a、b;

输出信号分别为sum(和)、carry(进位)。

逻辑方程:

sum=a⊕b;

carry=a*b。

输入信号a→N18(SW-1)、b→M20(SW-2)、输出信号sum(和)→U12(LED1)、carry(进位)→V12(LED2)

ⅰ输入信号a、b都为“0”,输出结果信息为两个发光二极管均为“灭”,说明和和进位都为0;

ⅱ输入信号a为“1”,b为“0”,输出结果信息为第一个发光二极管“灭”,第二个发光二极管“亮”,说明和为“1”,进位为0;

ⅲ输入信号a为“0”,b为“1”,输出结果信息为第一个发光二极管“灭”,第二个发光二极管“亮”。

说明和为“1”,进位为“0”;

ⅳ输入信号a、b都为“1”,输出结果信息为第一个发光二极管“亮”第二个发光二极管“灭”,说明和为“0”,进位为“1”.均符合设计要求

3、RS触发器

(1)实验代码

entityrs_clkis

port(s,r,res:

q,not_q:

outstd_logic);

endrs_clk;

architecturebehavofrs_clkis

signalsel1,sel2:

std_logic;

begin

process(res,sel1,sel2)

ifres='

thensel1<

='

sel2<

elsif(S='

andR='

)thensel1<

=sel1;

=sel2;

endif;

Q<

not_q<

endprocess;

endbehav;

(3)实验现象

将实验现象总结为RS触发器特性表,其中X指0或1均可;

输入为”1”指SW输入为高,输入为”0”指SW输入为低;

输出为”1”指对应LED灯灭(实验台的LED灯为高电平灭),输出为”0”指对应LED灯亮。

CLK触发

输入S

输入R

原来的Q

新的输出Q*

1

X

保持原状

不定状态

4、数码管十六进制计数器

entitymotoris

port(

clk:

rst:

sel:

outstd_logic;

q:

outstd_logic_vector(3downto0);

d:

outstd_logic_vector(7downto0)

);

endentity;

architectureb1ofmotoris

signalq1,q2:

process(clk,rst)

ifclk'

then

q1<

q2<

0010"

q<

=q2;

process(q1)

if(rst='

)thensel<

caseq1is

when

when"

0001"

=>

d<

01100000"

0100"

01100110"

1011"

00111110"

1101"

01111010"

endcase;

end;

将CLK接入较低频率,这样可以清晰地观察数码管从0—F(16进制数)的转变,完成一个循环之后,自动重新从0开始显示,进入下一个循环

5、跑马灯

entityledis

port(clk:

outstd_logic_vector(7downto0));

architectureledofledis

constants0:

std_logic_vector(1downto0):

00"

constants1:

01"

constants2:

10"

constants3:

11"

signalpresent:

std_logic_vector(1downto0);

std_logic_vector(7downto0);

signalcount:

process(rst,clk)

present<

=s0;

=(others=>

'

elsif(clk'

casepresentis

whens0=>

if(q1="

00000000"

elseif(count="

0111"

count<

00000001"

=s1;

elseq1<

=q1(0)&

q1(7downto1);

=count+1;

whens1=>

if(count="

=s2;

=q1(6downto0)&

q1(7);

whens2=>

0011"

00011000"

=s3;

elseq1(7downto4)<

=q1(4)&

q1(7downto5);

q1(3downto0)<

=q1(2downto0)&

q1(3);

whens3=>

=q1(6downto4)&

q1(3downto1);

实验开始,除了最左边的LED灯,其余实验箱上一排LED显示器全都点亮;

然后随着接入CLK触发信号的频率,每一个触发脉冲,灭的灯往右移动一位(原来灭的灯的右边一位灯灭),而原来灭的灯重新点亮;

当最右边一个灯灭了之后,下一个触发脉冲会重置循环,即又开始最左边的灯灭,其余的灯亮。

这样从视觉上就是一个黑点从左侧往右侧不断平移,一次移动一位,到达右侧终端后,黑点再次回到左侧,进入下一个周期。

6、键盘电路

useieee.std_logic_arith.all;

entitykeyboardis

start:

KBCol:

instd_logic_vector(3downto0);

KBRow:

seg7:

outstd_logic_vector(6downto0);

scan:

endkeyboard;

architecturebevofkeyboardis

signalsta:

scan<

a:

process(clk)

if(clk'

endprocessa;

b:

casecount(1downto0)is

KBRow<

sta<

1110"

whenothers=>

1111"

endprocessb;

process(clk,start)

ifstart='

seg7<

0000000"

elseif(clk'

casestais

caseKBColis

1001110"

When"

0111101"

1001111"

1000111"

Whenothers=>

1111111"

1110011"

1110111"

0011111"

0110011"

1011011"

1011111"

1110000"

1111110"

0110000"

1101101"

1111001"

endprocessc;

endbev;

将SW1拨到1,按下键盘上相应的按键,如按下5

LED显示按下键位对应的数字

7、LED点阵显示

useieee.std_logic_Unsigned.all;

useieee.std_logic_ARITH.all;

ENTITYdianzhenis

en:

hang:

outstd_logic_vector(15downto0);

count:

Enddianzhen;

Architecturedianzhenofdianzhenis

signalosc:

signalx:

std_logic_vector(0downto0);

signaly:

signalcount1:

signalcount2:

std_logic_vector(25downto0);

signaldata:

std_logic_vector(15downto0);

signald0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15:

signala0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15:

signalc0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15:

signalb0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15:

Begin

hang<

=data;

a0<

0000000000000000"

a1<

a13<

a14<

a15<

c0<

c1<

c15<

b0<

b14<

process(osc,en,clk,x,y,count2)

osc<

=notclk;

x<

1"

if(osc='

andosc'

event)then

count2<

=count2+1;

if(count2=100000)then

y<

=y+1;

IF(y="

if(x="

0"

if(en='

ifcount1<

data<

=d0;

count1<

elsifcount1<

=d1;

=d2;

=d3;

=d4;

0101"

=d5;

0110"

=d6;

=d7;

1000"

=d8;

1001"

=d9;

1010"

=d10;

=d11;

1100"

=d12;

=d13;

=d14;

=d15;

elsif(x="

if(y="

=c0;

=c1;

=c2;

=c3;

=c4;

=c5;

=c6;

=c7;

=c8;

=c9;

=c10;

=c11;

=c12;

dat

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

当前位置:首页 > PPT模板 > 图表模板

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

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