通信工程专业实训报告Word下载.docx
- 文档编号:16717361
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:11
- 大小:57.56KB
通信工程专业实训报告Word下载.docx
《通信工程专业实训报告Word下载.docx》由会员分享,可在线阅读,更多相关《通信工程专业实训报告Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体);
关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体);
正文部分采用三级标题;
第1章×
×
(小二号黑体居中,段前0.5行)
1.1×
小三号黑体×
(段前、段后0.5行)
1.1.1小四号黑体(段前、段后0.5行)
参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T7714-2005)》。
按键控制LED灯的流动方向
摘要
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
关键词:
FPGA;
LED灯;
流动方向控制
第1章
1.1工具、芯片
试验芯片:
仿真工具:
ISEDesignSuite14.7,ModelsimSE10.1c
1.2问题分析
点亮LED灯,控制LED灯的流动,是用按键控制LED灯流动的方向。
经过问题分析使用不同模块实现不同的功能。
分模块实现的有点:
每个的模块的功能尽量的单一化,使模块的复用性提高,方便其他模块的复用。
1.3模块的分化
时钟分频模块:
FPGA时钟分频即对FPGA的系统时钟根据自己所需进行频率处理,使之达到原来的1/N倍频率,使流水灯的流动速度达到肉眼可见。
按键消抖模块:
在机械按键的按下和松开时,都会产生抖动,为了保证系统能正确识别按键的按下和松开,就必须对按键的抖动进行处理。
LED灯流水作业模块:
具体控制LED灯的流动方向。
顶层模块:
包含时钟分频模块、按键消抖模块、LED灯流水作业模块、引脚绑定。
第2章
2.1时钟分频模块代码编写
modulefreq(
inputclk,
inputrest_n,
outputregclk_slow
);
reg[31:
0]counter;
always@(posedgeclkornegedgerest_n)
begin
if(!
rest_n)
begin
counter<
=0;
clk_slow<
end
else
if(counter<
5000000)//0.1s翻转一次,周期0.2m50M*8/1000=5M
counter<
=counter+1;
else
begin
counter<
=0;
clk_slow<
=~clk_slow;
end
end
2.2按键消抖模块
moduleKEY_button(
inputkey_in,
outputregkey_out
reg[1:
0]state;
0]cnt;
0]temp;
always@(posedgeclkornegedgerest_n)
begin
if(!
cnt<
else
=cnt+1;
end
always@(posedgeclkornegedgerest_n)
rest_n)begin
key_out<
=1;
state<
temp<
elsebegin
case(state)
0:
if(key_in==0)begin//刚刚按下
temp<
=cnt;
//按下时记录cnt值
state<
end
1:
if(cnt-temp>
400000)//按下有效,当cnt和当时按下的temp的差为400000=(50Mhz*1/88ms)
if(key_in==0)begin
key_out<
state<
=2;
end
elsebegin
state<
end
2:
if(key_in==1)begin//刚刚抬起
=3;
3:
400000)begin//抬起有效
if(key_in==1)begin
key_out<
endcase
endmodule
2.3LED灯流水作业模块
moduleled(
inputclk_slow,
inputkey_direct,
outputreg[3:
0]gpio_led
regflag;
always@(posedgekey_directornegedgerest_n)
if(!
flag<
=~flag;
end
always@(posedgeclk_slowornegedgerest_n)
begin
gpio_led<
=4'
b0000;
state<
elseif(!
flag)begin
case(state)
0:
gpio_led<
b1000;
state<
=1;
1:
b0100;
=2;
2:
b0010;
=3;
3:
b0001;
default:
endcase
elsebegin
case(state)
end
end
2.4顶层模块
moduleTOP_LED(
outputwire[3:
0]gpio_led
wirekey_out;
//---------------------
//时钟分频器:
产生一秒的时钟
freqfreq_inst(
.clk(clk),
.rest_n(rest_n),
.clk_slow(clk_slow)
//---------------------------------------------------------------------------------------
//按键消抖:
控制流水灯方向的按键进行消抖处理
//在机械按键的按下和松开时,都会产生抖动,为了保证系统能正确识别按键的按下和松开,就必须对按键的抖动进行处理。
KEY_buttonkey_button(
.key_in(key_direct),
.key_out(key_out)
//-------------------------
//流水灯模块
ledled_inst(
.clk_slow(clk_slow),
.key_direct(key_out),
.gpio_led(gpio_led)
Endmodule
2.4引脚绑定模块
NET"
clk"
LOC=P24;
rest_n"
LOC=P94;
key_direct"
LOC=P97;
gpio_led[0]"
LOC=P92;
gpio_led[1]"
LOC=P87;
gpio_led[2]"
LOC=P55;
gpio_led[3]"
LOC=P59;
2.5RTLschematic视图
第3章
3.1试验心得
学生实训心得
在学习FPGA时,遇到的问题有许多,譬如,写代码时的警告,特别是一些不能忽视的警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的警告已经出现了几次,但是就是解决不掉。
每次在学一个模块时,只要是看懂了,它的一些重点就没有及时的记录在本子上,只有个别的想起来时,才会做笔记。
每做完一个模块,没有及时记录下自己从这个模块中学到了什么。
上面的不足,都是在写模块的过程中,自己逐渐暴露出来的。
我很庆幸自己的一些问题能及时的被发现,避免类似的事情再次发生。
像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的原因,定期看一下。
每次写模块的时候,都要记下重点知识,即使是自己懂得的,好记性都是比不过烂笔头的。
关于以上的总结,我相信在以后的学习中一定会对自己有莫大的帮助,它会时刻警醒自己,在以前的学习中,自己有哪些不足,以后千万不能再去犯同样的错误,不断地纠正,不断地进步,相信自己一定会学好FPGA的。
学生(签名):
年月日
指导
教师
评语
成绩评定:
指导教师(签名):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信工程 专业 报告