实习Word格式.docx

上传人:b****6 文档编号:16710970 上传时间:2022-11-25 格式:DOCX 页数:21 大小:22.45KB
下载 相关 举报
实习Word格式.docx_第1页
第1页 / 共21页
实习Word格式.docx_第2页
第2页 / 共21页
实习Word格式.docx_第3页
第3页 / 共21页
实习Word格式.docx_第4页
第4页 / 共21页
实习Word格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实习Word格式.docx

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

实习Word格式.docx

//27位带复位计数器

//WhentheFPGAdrivesalogic0,thecorrespondingLEDturnson

//VIRTEX2PRO开发板上的LED的阳极通过电阻接到电源上,阴极作为输出控制级

//当输出低电平“0”时,LED点亮。

assignled_0=~cnt[23];

assignled_1=~cnt[24];

assignled_2=~cnt[25];

assignled_3=~cnt[26];

endmodule

本实验采用的分频计数器的位宽时27位(cnt【26:

0】)的各位所对应频率如下所示:

cnt[25]=1.49HZ;

cnt[24]=2.98HZ;

cnt[23]=5.96HZ

要求如下;

LD0=cnt[23]=5.96HZ

LD1=cnt[24]=2.98HZ;

LD2=cnt[25]=1.49HZ;

LD3=cnt[26]=0.745HZ;

并用RST按键进行复位控制。

实验设备

Pc主机、XilinxISE开发软件、Polestar实验平台中的LED灯。

实验步骤

(1)建立Project

(2)VerilogHDL语言输入

(3)XST综合设计

(4)建立ucf用户约束文件

(5)建立下载配置文件下载调试

实验结果与分析

实验板下载配置好之后,LED0、LED1、LED2、LED3分别以5.96HZ、1.49HZ、2.98HZ、0.745HZ闪烁,结果和预期完全相同。

实验二、键盘扫描码

实验目的:

1、了解矩阵式键盘原理

2、熟悉ISE设计流程

实验器材

Polestar实验箱上的矩阵键盘

实验内容

建立ISE工程,添加软件代码文件,进行管脚约束。

按下矩阵键盘的按键,在LED七段数码管显示数值。

VerilogHDL程序

`timescale1ns/1ps

//////////////////////////////////////////////////////////////////////////////////

//Company:

//Engineer:

//

//CreateDate:

13:

19:

1610/24/2011

//DesignName:

//ModuleName:

key_scan

//ProjectName:

//TargetDevices:

//Toolversions:

//Description:

//

//Dependencies:

//Revision:

//Revision0.01-FileCreated

//AdditionalComments:

modulekey_scan(clk_sys,rst_n,c,r,data,en,clk_test);

inputclk_sys,rst_n;

input[4:

0]r;

output[3:

0]c;

output[7:

0]data;

0]en;

outputclk_test;

reg[7:

reg[26:

0]count1;

regclk_scan;

reg[3:

0]c_tmp;

reg[4:

0]r_tmp;

0]data_shi;

0]data_ge;

0]en_tmp;

//初始化

initial

begin

c_tmp<

=4'

b1110;

en_tmp<

data_shi<

=8'

hff;

data_ge<

count1<

d10000;

end

//分频给行扫描

always@(posedgeclk_sys)

if(!

begin

count1<

end

if(count1==27'

d000000)

clk_scan<

=~clk_scan;

else

=count1-1;

end

assignclk_test=clk_scan;

//c0-c3按照扫描时钟输出扫描信号

always@(posedgeclk_scan)

begin

={c_tmp[2:

0],c_tmp[3]};

//输出行扫描信号

assignc=c_tmp[3:

0];

//读取列扫描信号

always@(negedgeclk_scan)

r_tmp<

=r;

//根据行列信号,判定按键的位置,给数码管赋值

case({c_tmp[3:

0],r_tmp})

9'

b110111110:

begindata_shi<

h03;

data_ge<

end//00

b110111101:

h9f;

end//01

b110111011:

h25;

end//02

b110110111:

h0d;

end//03

b110101111:

h99;

end//04

b101111110:

h49;

end//05

b101111101:

h41;

end//06

b101111011:

h1f;

end//07

b101110111:

h01;

end//08

b101101111:

h09;

end//09

b011111110:

end//10

b011111101:

end//11

b011111011:

end//12

b011110111:

end//13

b011101111:

end//14

b111011110:

end//15

b111011101:

end//16

b111011011:

end//17

b111010111:

end//18

b111001111:

end//19

endcase

//输出数码管使能信号EN

={en_tmp[2:

0],en_tmp[3]};

assignen=en_tmp;

//显示按键值

case(en_tmp)

4'

b1011:

data<

=data_shi;

b1101:

=data_ge;

default:

实验结果

本实验通过矩阵键盘扫描原理对按键进行扫描,如果有按键按下,那么在7段数码管上显示按键的数值。

实验三、蜂鸣器播放音乐

1、学习蜂鸣器发音原理

2、掌握FPGA的ISE开发流程

Polestar试验平台上的蜂鸣器

利用无源蜂鸣器,演奏乐曲《北京欢迎你》

VerilogHDL程序

10:

24:

2410/25/2011

fengmingqi

modulefengmingqi(clk_sys,key_pp_c,key_pp_r,sound_out);

//系统时钟clk_sys,播放/暂停键key_play_pause-->

key_pp,声音输出sound_out

inputclk_sys;

inputkey_pp_r;

outputkey_pp_c;

outputsound_out;

parameterpet=26'

d25000000;

//500ms为一个拍长

parameterh1c=16'

d47822;

//高音1m1=(100MHz/523.3)/2

parameterh2c=16'

d42562;

//高音2m1=(100MHz/523.3)/2

parameterh3c=16'

d37920;

//高音3m1=(100MHz/523.3)/2

parameterh4c=16'

d35792;

//高音4m1=(100MHz/523.3)/2

parameterh5c=16'

d31886;

//高音5m1=(100MHz/523.3)/2

parameterh6c=16'

d28407;

//咭?

m1=(100MHz/523.3)/2

parameterh7c=16'

d25302;

//高音7m1=(100MHz/523.3)/2

parameterh1=8'

d01;

parameterh2=8'

d02;

parameterh3=8'

d03;

parameterh4=8'

d04;

parameterh5=8'

d05;

parameterh6=8'

d06;

parameterh7=8'

d07;

parameterm1=8'

d08;

//中音1m1=(100MHz/523.3)/2

parameterm2=8'

d09;

//中音2m1=(100MHz/523.3)/2

parameterm3=8'

d10;

//中音3m1=(100MHz/523.3)/2

parameterm4=8'

d11;

//中音4m1=(100MHz/523.3)/2

parameterm5=8'

d12;

//中音5m1=(100MHz/523.3)/2

parameterm6=8'

d13;

//中音6m1=(100MHz/523.3)/2

parameterm7=8'

d14;

//中音7m1=(100MHz/523.3)/2

parameterl1=8'

d15;

//低音1m1=(100MHz/523.3)/2

parameterl2=8'

d16;

//低音2m1=(100MHz/523.3)/2

parameterl3=8'

d17;

//低音3m1=(100MHz/523.3)/2

parameterl4=8'

d18;

//低音4m1=(100MHz/523.3)/2

parameterl5=8'

d19;

//低音5m1=(100MHz/523.3)/2

parameterl6=8'

d20;

//低音6m1=(100MHz/523.3)/2

parameterl7=8'

d21;

//低音7m1=(100MHz/523.3)/2

wireclk_pp;

wirekey_pp_c;

regclk_LUT;

regkey_reg;

reg[15:

0]FLA;

//FLAisshortfor:

FrequentLUTAddress

0]fre_reg;

reg[25:

0]pet_reg;

0]count_reg;

regsout;

FLA=16'

h0000;

count_reg=16'

count1=16'

//key_pp的行线置0,为了下面读取是否有按键按下

assignkey_pp_c=1'

b0;

//判断key_pp是否按下

if(key_pp_r==0)

key_reg=!

key_reg;

//key_pp控制时钟的通断

assignclk_pp=clk_sys&

&

key_reg;

//拍长发生器模块,产生固定的节拍时间

always@(posedgeclk_pp)

if(pet_reg==27'

d00000)

pet_reg=pet;

clk_LUT=~clk_LUT;

pet_reg=pet_reg-1;

//频率查找表,产生查找乐谱的地址

//always@(posedgeclk_LUT)

//begin

//if(FLA==16'

hfff0)

//begin

//FLA=16'

d000;

//end

//else

//FLA=FLA+1;

//

//end

//分频值查找表,存放乐谱用

always@(posedgeclk_LUT)

case(FLA)

16'

d000:

fre_reg<

=m5;

d001:

=m3;

d002:

d003:

=h1;

d004:

d005:

=m6;

d006:

d007:

d008:

d009:

d010:

=m1;

d011:

=m2;

d012:

d013:

d014:

d015:

d016:

d017:

d018:

d019:

d020:

d021:

d022:

=m7;

d023:

d024:

d025:

d026:

d027:

d028:

d029:

16'

d030:

=m4;

d031:

d032:

d033:

d034:

d035:

d036:

d037:

d038:

d039:

d040:

d041:

d042:

d043:

d044:

d045:

d046:

d047:

d048:

d049:

d050:

d051:

d052:

d053:

d054:

d055:

d056:

d057:

d058:

d059:

d060:

d061:

d062:

d063:

d064:

d065:

d066:

d067:

d068:

d069:

d070:

if(FLA==16'

d71)

FLA=16'

FLA=FLA+1;

//依据分频值查找表判断送给频率发生器的计数值

case(fre_reg)

h1:

count_reg<

=h1c;

h2:

count_r

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

当前位置:首页 > 农林牧渔 > 林学

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

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