通信工程专业实训报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档