通信工程专业实训报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生实训报告
实训课程通信工程专业实训
学院名称信息科学与技术学院
专业名称通信工程
学生姓名王城、张清静、谭政
学生学号201313070202、03、05
指导教师高嵩老师、刘同老师等
实训地点6C601
实训成绩
二〇一六年十二月二〇一六年十二月
填写说明
1、适用于本科生所有的实训报告(印制实训报告册除外);
2、专业填写为专业全称,有专业方向的用小括号标明;
3、格式要求:
①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色
水笔书写。
②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认
形式(上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm)。
字符间距为默认值(缩放100%,间距:标准);页码用小五号
字底端居中。
③具体要求:
题目(二号黑体居中);
摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字
部分,小4号宋体);
关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,
用分号隔开,小4号黑体);
正文部分采用三级标题;
第1章××(小二号黑体居中,段前0.5行)
1.1 ×××××小三号黑体×××××(段前、段后0.5行)
1.1.1小四号黑体(段前、段后0.5行)
参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。
按键控制LED灯的流动方向
摘要
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在
器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件
关键词:FPGA;LED灯;流动方向控制
第1章
1.1工具、芯片
试验芯片:
仿真工具:ISE Design Suite 14.7,Modelsim SE 10.1c
1.2问题分析
点亮LED灯,控制LED灯的流动,是用按键控制LED灯流动的方向。经过问题分析使用不同模块实现不同的功能。分模块实现的有点:每个的模块的功能尽量的单一化,使模块的复用性提高,方便其他模块的复用。
1.3模块的分化
时钟分频模块:FPGA时钟分频即对FPGA的系统时钟根据自己所需进行频率处理,使之达到原来的1/N倍频率,使流水灯的流动速度达到肉眼可见。
按键消抖模块:在机械按键的按下和松开时,都会产生抖动,为了保证系统能正确识别按键的按下和松开,就必须对按键的抖动进行处理。
LED 灯流水作业模块:具体控制LED 灯的流动方向。
顶层模块:包含时钟分频模块、按键消抖模块、LED灯流水作业模块、引脚绑定。
第2章
2.1时钟分频模块代码编写
module freq(
input clk,
input rest_n,
output reg clk_slow
);
reg [31:0]counter;
always@ (posedge clk or negedge rest_n)
begin
if (!rest_n)
begin
counter <= 0;
clk_slow <= 0;
end
else
begin
if(counter < 5000000) // 0.1s翻转一次,周期0.2m 50M * 8 / 1000 = 5M
counter <= counter + 1;
else
begin
counter<=0;
clk_slow <= ~clk_slow;
end
end
end
2.2按键消抖模块
module KEY_button(
input clk,
input rest_n,
input key_in,
output reg key_out
);
reg [1:0]state;
reg [31:0]cnt;
reg [31:0]temp;
always@(posedge clk or negedge rest_n)
begin
if(!rest_n)
cnt<=0;
else
cnt<=cnt+1;
end
always@(posedge clk or negedge rest_n )
begin
if(!rest_n)begin
key_out<=1;
state<=0;
temp<=0;
end
else begin
case(state)
0:begin
if(key_in==0) begin//刚刚按下
temp<=cnt;//按下时记录cnt值
state<=1;
end
end
1:begin
if(cnt-temp>400000)//按下有效,当cnt和当时按下的temp的差为400000=(50Mhz* 1/8 8ms )
begin
if(key_in==0)begin
key_out<=0;
state<=2;
end
else begin
state<=0;
end
end
end
2:begin
if(key_in==1) begin//刚刚抬起
state<=3;
temp<=cnt;
end
end