可编程数字ASIC设计实验指导书.docx

上传人:b****6 文档编号:7305027 上传时间:2023-01-22 格式:DOCX 页数:12 大小:108.90KB
下载 相关 举报
可编程数字ASIC设计实验指导书.docx_第1页
第1页 / 共12页
可编程数字ASIC设计实验指导书.docx_第2页
第2页 / 共12页
可编程数字ASIC设计实验指导书.docx_第3页
第3页 / 共12页
可编程数字ASIC设计实验指导书.docx_第4页
第4页 / 共12页
可编程数字ASIC设计实验指导书.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

可编程数字ASIC设计实验指导书.docx

《可编程数字ASIC设计实验指导书.docx》由会员分享,可在线阅读,更多相关《可编程数字ASIC设计实验指导书.docx(12页珍藏版)》请在冰豆网上搜索。

可编程数字ASIC设计实验指导书.docx

可编程数字ASIC设计实验指导书

长春建筑学院

 

《可编程数字ASIC设计》课程

实验指导书

 

电气信息学院

FPGA系列实验一——点亮LED

1.实验任务

点亮发光二极管。

通过这个实验,熟悉并掌握CPLD/FPGA开发软件QuartusII的使用方法和开发流程以及VerilogHDL的编程方法。

2.实验环境

硬件实验环境为FPGA实验开发系统。

软件实验环境为QuartusII13.0开发软件。

3.实验原理

FPGA器件同单片机一样,为用户提供了许多灵活的独立的输入/输出I/O口(单元)。

FPGA每个I/O口可以配置为输入、输出、双向、集电极开路和三态门等各种组态。

作为输出口时,FPGA的I/O口可以吸收最大为24mA的电流,可以直接驱动发光二极管LED等器件。

通过原理图可知如果要点亮这八个LED,所以只要正确分配并锁定引脚后,在相应的引脚上输出相应高电平“1”,就可实现点亮该发光二极管的功能。

开发板均采用输出“1”点亮LED的模式,以后就不再另作说明。

 

4.实验程序

(1)利用连续赋值assign语句来实现(文件名led.v)

moduleled1(led);//模块名led

output[7:

0]led;//定义输出端口

assignled=8'b10101010;

endmodule

(2)利用过程赋值语句来实现(文件名led1.v)

moduleled1(led);//模块名led1

output[7:

0]led;//定义输出端口

reg[7:

0]led;

always

begin

led=8'b10101010;

end

endmodule

5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newproject

wizard建立一个工程项目led。

(2)建立文本编辑文件:

点击File→New...,在该项目下新建VerilogHDL源程序文件led.v,输入试验程序中的源程序代码保存后选择工具栏中的

按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件,以及进行一些配置。

选择配置器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。

点击两次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上

按钮,配置led[0]---led[7]以及clk的引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的

按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。

(6)波形仿真:

由于本次试验比较简单,波形仿真将在后面实验详细讲解。

(7)下载设计程序到目标FPGA。

6.实验现象

第一个实验终于完成了,看到实验板上的8个LED灯间隔点亮,是不是特有成就感!

只要动手,一切都这么简单!

让我们进行下面的实验吧!

以后的实验将会更精彩!

 

FPGA系列实验二——LED闪烁灯

1.实验任务

让实验板上的8个LED周期性的闪烁。

通过这个实验,熟悉并掌握采用计数与判断的方式来实现分频的VerilogHDL的编程方法以及QuartusII软件的使用方法和开发流程。

2.实验环境

硬件实验环境为FPGA实验开发系统。

软件实验环境为QuartusII13.0开发软件。

3.实验原理

开发套件板载50MHz的时钟源,假如我们直接把它输入到发光二极管LED,由于人眼的延迟性,我们将无法看到LED闪烁,认为它一直亮着。

如果我们期望看到闪烁灯,就需要将时钟源的频率降低后再输出。

本实验采用计数与判段的方式来实现降低时钟源的频率。

计数电路可用计数器实现,每来一个时钟脉冲CLK,计数器就加1,而每当判断出计数器达到某个数值时,把输出状态求反,就使得8个LED的亮灭反转一次,即:

周期性的输出高电平“1”和低电平“0”。

这样设计相当于把50MHz的时钟源分频后输出。

如果最终要使得LED1S闪烁一次,即输出1Hz的时钟脉冲,让计数器计到25000000便可以让LED亮0.5秒、灭0.5秒。

4.实验程序

moduleled1(clk,led);//模块名及端口参数

inputclk;//输入端口定义

output[7:

0]led;//输出端口定义

reg[7:

0]led;//输出端口定义为寄存器型

reg[25:

0]buffer;//中间变量buffer定义为寄存器型

always@(posedgeclk)

begin//顺序语句,到end止

buffer<=buffer+1;//计数器buffer按位加1

if(buffer==26'd25000000)//判别buffer中的数值为25000000时,

//做输出处理

begin

led<=~led;//led[0]-led[7]反转一次。

buffer<=0;

end

end

endmodule

5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newproject

wizard建立一个工程项目led1。

(2)建立文本编辑文件:

点击File→New...,在该项目下新建VerilogHDL源程序文件led1.v,输入试验程序中的源程序代码保存后选择工具栏中的

按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件,以及进行一些配置。

选择配置器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。

点击两次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上

按钮,配置led[0]---led[7]以及clk的引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的

按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。

(6)波形仿真:

由于本次试验比较简单,波形仿真将在后面实验详细讲解。

(7)下载设计程序到目标FPGA。

6.实验现象

第二个实验完成了,看到实验板上8个LED灯周期性的闪烁,是不是觉

得这个实验比上个实验有意思呢?

回想一下我们通过这个实验学会了什么?

采用计数与判断的方式来实现分频的VerilogHDL的编程方法,你学会了没?

应该有那么一点点收获吧!

 

FPGA系列实验三——LED流水灯

1.实验任务

让实验板上的8个LED实现流水灯的功能。

通过这个实验,进一步掌握采用计数与判断的方式来实现分频的VerilogHDL的编程方法以及移位运算符的使用。

2.实验环境

硬件实验环境为FPGA实验开发系统。

软件实验环境为QuartusII13.0开发软件。

3.实验原理

流水灯,顾名思义就是让LED象水一样的点亮。

如果把流水做慢动作播放,可以想象到其实就是移动,即:

把水块不断地向同一方向移动,而原来的水块保持不动,就形成了流水。

同样,如果使得最左边的灯先亮;然后,通过移位,在其右侧的灯,由左向右依次点亮,而已经亮的灯又不灭,便形成了向右的流水灯。

初始状态时,8个灯都不亮。

每来一个时钟脉冲CLK,计数器就加1。

每当判断出计数器中的数值达到25000000时,就会点亮一个灯,并进行移位。

FPGA输出的数据就应该首先是10000000,隔1秒钟变成11000000……一直变化到11111111,这样,依次点亮所有的灯,就形成了流水灯。

而当8个灯都点亮时,需要一个操作使得所有的灯恢复为初始状态,即:

灯都不亮。

然后,再一次流水即可。

如果是右移位,就出现向右流水的现象;反之,向左流水。

4.实验程序

moduleledwater(clk,led);//模块名及端口参数

output[7:

0]led;//输出端口定义

inputclk;//输入端口定义,50M时钟

reg[8:

0]led_out;//变量led_out定义为寄存器型

reg[8:

0]led_out1;//变量led_out1定义为寄存器型

reg[25:

0]buffer;//中间变量buffer定义为寄存器型

always@(posedgeclk)

begin

buffer=buffer+1;

if(buffer==26'd25000000)//判别buffer数值为25000000时,做输出处理

begin

led_out=led_out<<1;//led向左移位,空闲位自动添0补位

if(led_out==9'b000000000)

led_out=9'b111111111;

led_out1=~led_out;//取反输出

end

end

assignled=led_out1[7:

0];

endmodule

5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newprojectwizard建立一个工程项目ledwater。

(2)建立文本编辑文件:

点击File→New在该项目下新建VerilogHDL源程序文件ledwater.v,输入试验程序中的源程序代码保存后选择工具栏中的

按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件,以及进行一些配置。

设置不需要使用的IO功能为Asinputs,tri-stated。

点击两次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上

按钮,配置led[0]---led[7]以及clk的引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processing—StartCompilation或点击工具栏上的

按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。

(6)波形仿真:

由于本次试验比较简单,波形仿真将在后面实验详细讲解。

(7)下载设计程序到目标FPGA

6.实验现象

经过前两个实验的训练,第三个实验应该很轻松地就做完了吧!

看到实验板上LED实验了流水灯的功能,你是否掌握了移位运算符的使用,你可以试着自己编写其他花样的流水灯,比如左流水或其他花样的流水灯,这就要看你的想象力了。

 

FPGA系列实验四——LED跑马灯

1.实验任务

让实验板上的8个LED实现跑马灯的功能。

通过这个实验,进一步掌握采用计数与判断的方式来实现分频的VerilogHDL的编程方法以及移位运算符的使用。

2.实验环境

硬件实验环境为FPGA实验开发系统。

软件实验环境为QuartusII13.0开发软件。

3.实验原理

从LED[0]到LED[7]依次点亮,第二个灯点亮时第一个熄灭,每个灯交换的时间为0.5S;看上去的效果就象一个亮点从LED[0]跑向LED[7],然后重复此循环,故命名跑马灯。

初始状态时,LED[0]亮,其余熄灭。

每来一个时钟脉冲CLK,计数器就加1。

每当判断出计数器中的数值达到25000000时,就会点亮LED[1],同时LED[0]熄灭,并进行移位。

这样,依次点亮所有的灯,就形成了跑马灯。

而当LED[7]点亮时,需要一个操作使得恢复为初始状态,即:

LED[0]亮,其余熄灭。

然后,再进行一次跑马灯,重复此循环。

如果是右移位,就出现向右跑马的现象;反之,向左跑马。

4.实验程序

moduleledwalk(led,clk);

inputclk;

output[7:

0]led;

reg[7:

0]led_out;

reg[25:

0]buffer;

always@(posedgeclk)

begin

buffer<=buffer+1'b1;

if(buffer==26'd25000000)

begin

led_out=led_out<<1;

if(led_out==8'b00000000)

led_out=8'b00000001;

end

end

assignled=led_out;

endmodule

5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newprojectwizard建立一个工程项目ledwalk。

(2)建立文本编辑文件:

点击File→New..在该项目下新建VerilogHDL源程序文件ledwalk.v,输入试验程序中的源程序代码保存后选择工具栏中的

按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件,以及进行一些配置。

选择配置器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。

点击两次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上

按钮,配置LED[0]---LED[7]以及clk的引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的

按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。

(6)波形仿真:

由于本次试验比较简单,波形仿真将在后面实验详细讲解。

(7)下载设计程序到目标FPGA

6.实验现象

实验应该很轻松就成功了吧!

看到LED[0]到LED[7]依次点亮,移位运算符的使用应当非常熟练了吧!

你有没有想过用其他方式实现跑马灯的功能,比如用case语句。

下面给出一个用case语句实现的跑马灯程序供大家学习。

大家可以比较一下两钟方式实现跑马灯的资源占用情况。

 

FPGA系列实验五——LED花样彩灯

 

1.实验任务

让实验板上的8个LED实现花样彩灯的功能。

通过这个实验,进一步掌握采用计数器实现分频的VerilogHDL的编程方法以及case语句的使用。

2.实验环境

硬件实验环境为FPGA实验开发系统。

软件实验环境为QuartusII13.0开发软件。

3.实验原理

本次试验是对前几个实验的总结,让LED逐步实现闪烁—流水灯—闪烁—跑马灯—闪烁—对灯流水—闪烁,重复此循环即可实现彩灯显示功能。

本次实验程序采用case语句编写,程序比较通俗易懂,具体实现原理在前面实验都已详细讲述,本次试验将不再重复。

4.实验程序

moduleled_run(sys_clk,led);

inputsys_clk;

output[7:

0]led;

reg[7:

0]led;

reg[24:

0]count;

reg[4:

0]state;

wireclk;

always@(posedgesys_clk)

count<=count+1'b1;

assignclk=count[23];

always@(posedgeclk)

begin

case(state)

5'b00000:

led=8'b11111111;

5'b00001:

led=8'b00000000;

5'b00010:

led=8'b10000000;

5'b00011:

led=8'b11000000;

5'b00100:

led=8'b11100000;

5'b00101:

led=8'b11110000;

5'b00110:

led=8'b11111000;

5'b00111:

led=8'b11111100;

5'b01000:

led=8'b11111110;

5'b01001:

led=8'b11111111;

5'b01010:

led=8'b00000000;

5'b01011:

led=8'b11111111;

5'b01100:

led=8'b00000001;

5'b01101:

led=8'b00000010;

5'b01110:

led=8'b00000100;

5'b01111:

led=8'b00001000;

5'b10000:

led=8'b00010000;

5'b10001:

led=8'b00100000;

5'b10010:

led=8'b01000000;

5'b10011:

led=8'b10000000;

5'b10100:

led=8'b11111111;

5'b10101:

led=8'b00000000;

5'b10110:

led=8'b11111111;

5'b10111:

led=8'b10000001;

5'b11000:

led=8'b11000011;

5'b11001:

led=8'b11100111;

5'b11010:

led=8'b11111111;

5'b11011:

led=8'b00011000;

5'b11100:

led=8'b00111100;

5'b11101:

led=8'b01111110;

5'b11110:

led=8'b11111111;

5'b11111:

led=8'b00000000;

endcase

state=state+1;

end

endmodule

5.实验步骤

(1)建立新工程项目:

打开QuartusII软件,进入集成开发环境,点击File→Newprojectwizard建立一个工程项目led_run。

(2)建立文本编辑文件:

点击File→New..在该项目下新建VerilogHDL源程序文件led_run.v,输入试验程序中的源程序代码保存后选择工具栏中的

按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

(3)选择器件型号及引脚的其他设置:

选择所用的FPGA器件,以及进行一些配置。

选择配置器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。

点击两次ok,回到主界面。

(4)配置FPGA引脚:

在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上

按钮,配置LED[0]---LED[7]以及clk的引脚。

(5)编译工程项目:

在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的

按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。

(6)波形仿真:

由于本次试验比较简单,波形仿真将在后面实验详细讲解。

(7)下载设计程序.sof文件到目标FPGA,下载采用JTAG方式(由于配置芯片擦写次数有限,实验均采用JTAG下载方式)。

6.实验现象

实验是对前面几个实验的总结,应该很轻松就能完成。

实验成功将会看到LED逐步实现闪烁—流水灯—闪烁—跑马灯—闪烁—对灯流水—闪烁的循环显示,大家可以试着按照自己的想象编写程序实现其他花样彩灯。

 

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

当前位置:首页 > 初中教育 > 初中作文

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

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