创意流水灯设计报告.docx

上传人:b****8 文档编号:10284774 上传时间:2023-02-09 格式:DOCX 页数:15 大小:143.40KB
下载 相关 举报
创意流水灯设计报告.docx_第1页
第1页 / 共15页
创意流水灯设计报告.docx_第2页
第2页 / 共15页
创意流水灯设计报告.docx_第3页
第3页 / 共15页
创意流水灯设计报告.docx_第4页
第4页 / 共15页
创意流水灯设计报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

创意流水灯设计报告.docx

《创意流水灯设计报告.docx》由会员分享,可在线阅读,更多相关《创意流水灯设计报告.docx(15页珍藏版)》请在冰豆网上搜索。

创意流水灯设计报告.docx

创意流水灯设计报告

设计报告

团队名虫虫特工队

作者黄红娟王玉川王雁柳沐璇

完成时间2011-7-4

版本号

目录

设计报告1

目录2

图目录3

设计目标4

设计平台4

设计框架4

设计模块描述6

设计实施7

经验教训8

未来工作8

参考文献9

图目录

图1结构图............................................................................................................................5

图2模块图........................................................................................................................5

图3RTL连线图......................................................................................................................6

图4Technology连线图............................................................................................6

图5整个设计的FPGA逻辑资源占用表...........................................................7

图6UCF分配表............................................................................................................7

 

设计目标

本次实验是通过编写VerilogHDL语言实现创意流水灯的功能,然后下载到SPARTAN-3E板上显示出来。

通过本次设计实验对ISE10.1软件的使用有了进一步的掌握,对VerilogHDL语言的编写规则基本能够熟练应用。

掌握了SPARTAN-3E板上的按钮开关和滑动开关的UCF约束、I/O口分配和I/O口标准,LED灯点亮的条件,时钟信号的提供方法。

设计平台

设计的主要软硬件开发环境:

WindowsXPXilinxISE10.1.03i

软件开发用到了哪些工具,版本:

Xilinx–ISE10.1,DigilentAdept;

硬件开发用到了计算机设备,设备配置,NEXYS2Digilent开发板卡

设计框架

00008个LED灯相间亮

图一结构图

moduleliushui4(

inputreset,

input[3:

0]choose,

inputclk,

outputreg[7:

0]led

);

Reset是复位信号,[3:

0]choose是用来实现case语句的选择的,clk信号是用来实现分频的,整个程序是共用一个时钟信号,实现2的24方分频,8个led灯是输出信号。

设计模块描述

总的模块:

图二模块图

reset是复位信号,[3:

0]choose是用来实现case语句的选择的,clk信号是用来实现分频的,整个程序是共用一个时钟信号,实现2的24方分频,8个led灯是输出信号。

这是总的共用模块,数据方向是从左往右。

设计实施

图三RTL连线图

 

图四Technology连线图

 

图五整个设计的FPGA逻辑资源占用表

图六UCF分配表.

经验教训

实验中遇到的问题以及是如何解决的

组员1:

a.在实验中,我们先编写各自的程序,然后在此基础上需要整合,于是我们就用到了case语句。

b.if语句用途局限,我们可以在语句不太长时应用case语句(虽然有点冗长)。

c.程序文件有时候会被覆盖,注意测试文件与程序文件不能重名。

组员2:

a.过程中,会使的语句太少,所以编程时仅使用单一的语句进行编程。

b.always语句中尽量使用异步形式,同步时可能在运行时选择寄存器出现问题。

组员3:

a.如果有两个或两个以上的语句,必须要用begin......end语句

b.复位信号之后,要记得赋初值,要不然回不到初始状态。

组员4:

在程序的整合过程中,怎么使用同一个变量作为计数,而不影响程序的运行。

没有解决。

:

未来工作

虽然能实现一些自己设计的功能,但在程序编写方面还是很不够精简,代码有些繁琐,需是程序更加精炼。

语言方面的知识需要进一步学习。

参考文献

moduleliushui4(

inputreset,

input[3:

0]choose,

inputclk,

outputreg[7:

0]led

);

reg[23:

0]count=0;

regen=1;

reg[4:

0]x;

reg[5:

0]state;

reg[2:

0]y;

always@(posedgeclk)

count<=count+1;

always@(posedgecount[23])

case(choose)

4'b0000:

begin

if(!

reset)

led=8'b10101010;

else

led=~led;

end

4'b0001:

begin

if(reset)

led=~led;

elseled=8'b00001111;

end

4'b0010:

begin

if(reset)

begin

if(led==8'b11110000)

led=8'b11100000;

if(led[7:

0]==8'b11100000)

en=0;

if(led[7:

0]==8'b00000111)

en=1;

if(en)

led[7:

0]={led[6:

0],led[7]};

else

led[7:

0]={led[0],led[7:

1]};

end

if(!

reset)led[7:

0]=8'b11110000;

end

4'b0011:

begin

if(reset)

begin

if(led==8'b10000001)

en=1;

if(led==8'b00011000)

en=0;

if(en)

led={led[4],led[7:

5],led[2:

0],led[3]};

else

led={led[6:

4],led[7],led[0],led[3:

1]};

end

else

led=8'b10000001;

end

4'b0100:

begin

if(!

reset)

led=8'b00100010;

if(led==8'b01000100)

en=1;

elseif(led==8'b00100010)

en=0;

if(en)

led[7:

0]={led[6:

0],led[7]};

else

led[7:

0]={led[0],led[7:

1]};

end

4'b0101:

if(!

reset)

begin

led=8'b00000000;

state=4'b0000;

end

else

begin

case(state)

4'b0000:

led=8'b00000001;

4'b0001:

led=8'b00000011;

4'b0010:

led=8'b00000111;

4'b0011:

led=8'b00001111;

4'b0100:

led=8'b00011111;

4'b0101:

led=8'b00111111;

4'b0110:

led=8'b01111111;

4'b0111:

led=8'b11111111;

4'b1000:

led=8'b01111111;

4'b1001:

led=8'b00111111;

4'b1010:

led=8'b00011111;

4'b1011:

led=8'b00001111;

4'b1100:

led=8'b00000111;

4'b1101:

led=8'b00000011;

4'b1110:

led=8'b00000001;

4'b1111:

led=8'b00000000;

default:

led=8'b00000001;

endcase

state=state+1;

end

4'b0110:

begincase(y)3'b000:

led=8'b10000001;3'b001:

led=8'b11000011;3'b010:

led=8'b11100111;3'b011:

led=8'b01111110;3'b100:

led=8'b00111100;3'b101:

led=8'b00011000;3'b110:

led=8'b00000000;3'b111:

led=8'b11111111;endcaseif(!

reset)led=8'b11111111;y=y+1;end

4'b0111:

begincase(y)3'b000:

led=8'b10011001;3'b001:

led=8'b01100110;3'b010:

led=8'b10100101;3'b011:

led=8'b01011010;3'b100:

led=8'b00100100;3'b101:

led=8'b00011000;3'b110:

led=8'b01000010;3'b111:

led=8'b00111100;endcaseif(!

reset)led=8'b11111111;y=y+1;end

4'b1000:

begin

case(x)

5'b00000:

led=8'b10000000;

5'b00001:

led=8'b01000000;

5'b00010:

led=8'b00100000;

5'b00011:

led=8'b00010000;

5'b00100:

led=8'b00001000;

5'b00101:

led=8'b00000100;

5'b00110:

led=8'b00000010;

5'b00111:

led=8'b00000001;

5'b01000:

led=8'b00000011;

5'b01001:

led=8'b00000110;

5'b01010:

led=8'b00001100;

5'b01011:

led=8'b00011000;

5'b01100:

led=8'b00110000;

5'b01101:

led=8'b01100000;

5'b01110:

led=8'b11000000;

5'b01111:

led=8'b11100000;

5'b10000:

led=8'b01110000;

5'b10001:

led=8'b00111000;

5'b10010:

led=8'b00011100;

5'b10011:

led=8'b00001110;

5'b10100:

led=8'b00000111;

5'b10101:

led=8'b00001111;

5'b10110:

led=8'b00011110;

5'b10111:

led=8'b00111100;

5'b11000:

led=8'b01111000;

5'b11001:

led=8'b11110000;

5'b11010:

led=8'b11111000;

5'b11011:

led=8'b01111100;

5'b11100:

led=8'b00111110;

5'b11101:

led=8'b00011111;

5'b11110:

led=8'b00111111;

5'b11111:

led=8'b01111110;

endcase

if(!

reset)

led=8'b11111111;

x=x+1;

end

4'b1001:

if(!

reset)

begin

led=8'b00000000;

state=6'b00000;

end

else

begin

case(state)

6'b000000:

led=8'b00000001;

6'b000001:

led=8'b00000010;

6'b000010:

led=8'b00000100;

6'b000011:

led=8'b00001000;

6'b000100:

led=8'b00010000;

6'b000101:

led=8'b00100000;

6'b000110:

led=8'b01000000;

6'b000111:

led=8'b10000000;

6'b001000:

led=8'b10000001;

6'b001001:

led=8'b10000010;

6'b001010:

led=8'b10000100;

6'b001011:

led=8'b10001000;

6'b001100:

led=8'b10010000;

6'b001101:

led=8'b10100000;

6'b001110:

led=8'b11000000;

6'b001111:

led=8'b11000001;

6'b010000:

led=8'b11000010;

6'b010001:

led=8'b11000100;

6'b010010:

led=8'b11001000;

6'b010011:

led=8'b11010000;

6'b010100:

led=8'b11100000;

6'b010101:

led=8'b11100001;

6'b010110:

led=8'b11100010;

6'b010111:

led=8'b11100100;

6'b011000:

led=8'b11101000;

6'b011001:

led=8'b11110000;

6'b011010:

led=8'b11110001;

6'b011011:

led=8'b11110010;

6'b011100:

led=8'b11110100;

6'b011101:

led=8'b11111000;

6'b011110:

led=8'b11111001;

6'b011111:

led=8'b11111010;

6'b100000:

led=8'b11111100;

6'b100001:

led=8'b11111101;

6'b100010:

led=8'b11111110;

6'b100011:

led=8'b11111111;

default:

led=8'b00000001;

endcase

state=state+1;

end

4'b1010:

begin

case(led)

8'b10000001:

led=8'b11000011;

8'b11000011:

led=8'b11100111;

8'b11100111:

led=8'b11111111;

8'b11111111:

led=8'b00011000;

8'b00011000:

led=8'b00111100;

8'b00111100:

led=8'b01111110;

8'b01111110:

led=8'b00000000;

default:

led=8'b10000001;

endcase

if(!

reset)led=8'b10000001;

end

endcase

endmodule

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

当前位置:首页 > 医药卫生 > 基础医学

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

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