欢迎来到天天文库
浏览记录
ID:38331156
大小:162.50 KB
页数:17页
时间:2019-06-10
《可编程数字ASIC设计_实验指导书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、长春建筑学院《可编程数字ASIC设计》课程实验指导书电气信息学院16FPGA系列实验一——点亮LED1.实验任务点亮发光二极管。通过这个实验,熟悉并掌握CPLD/FPGA开发软件QuartusII的使用方法和开发流程以及VerilogHDL的编程方法。2.实验环境硬件实验环境为FPGA实验开发系统。软件实验环境为QuartusII13.0开发软件。3.实验原理FPGA器件同单片机一样,为用户提供了许多灵活的独立的输入/输出I/O口(单元)。FPGA每个I/O口可以配置为输入、输出、双向、集电极开路和三态门等各种组态。作为输出口时,FPGA的I/O口可以吸收最大
2、为24mA的电流,可以直接驱动发光二极管LED等器件。通过原理图可知如果要点亮这八个LED,所以只要正确分配并锁定引脚后,在相应的引脚上输出相应高电平“1”,就可实现点亮该发光二极管的功能。开发板均采用输出“1”点亮LED的模式,以后就不再另作说明。164.实验程序(1)利用连续赋值assign语句来实现(文件名led.v)moduleled1(led);//模块名ledoutput[7:0]led;//定义输出端口assignled=8'b10101010;endmodule(2)利用过程赋值语句来实现(文件名led1.v)moduleled1(led);/
3、/模块名led1output[7:0]led;//定义输出端口reg[7:0]led;alwaysbeginled=8'b10101010;endendmodule5.实验步骤(1)建立新工程项目:打开QuartusII软件,进入集成开发环境,点击File→Newprojectwizard建立一个工程项目led。(2)建立文本编辑文件:点击File→New...,在该项目下新建VerilogHDL源程序文件led.v,输入试验程序中的源程序代码保存后选择工具栏中的按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。(3)选择器件型号及引脚的其
4、他设置:选择所用的FPGA器件,以及进行一些配置。选择配置器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。点击两次ok,回到主界面。(4)配置FPGA引脚:在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上按钮,配置led[0]---led[7]以及clk的引脚。16(5)编译工程项目:在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。(6)波形仿真:
5、由于本次试验比较简单,波形仿真将在后面实验详细讲解。(7)下载设计程序到目标FPGA。6.实验现象第一个实验终于完成了,看到实验板上的8个LED灯间隔点亮,是不是特有成就感!只要动手,一切都这么简单!让我们进行下面的实验吧!以后的实验将会更精彩!16FPGA系列实验二——LED闪烁灯1.实验任务让实验板上的8个LED周期性的闪烁。通过这个实验,熟悉并掌握采用计数与判断的方式来实现分频的VerilogHDL的编程方法以及QuartusII软件的使用方法和开发流程。2.实验环境硬件实验环境为FPGA实验开发系统。软件实验环境为QuartusII13.0开发软件。3
6、.实验原理开发套件板载50MHz的时钟源,假如我们直接把它输入到发光二极管LED,由于人眼的延迟性,我们将无法看到LED闪烁,认为它一直亮着。如果我们期望看到闪烁灯,就需要将时钟源的频率降低后再输出。本实验采用计数与判段的方式来实现降低时钟源的频率。计数电路可用计数器实现,每来一个时钟脉冲CLK,计数器就加1,而每当判断出计数器达到某个数值时,把输出状态求反,就使得8个LED的亮灭反转一次,即:周期性的输出高电平“1”和低电平“0”。这样设计相当于把50MHz的时钟源分频后输出。如果最终要使得LED1S闪烁一次,即输出1Hz的时钟脉冲,让计数器计到250000
7、00便可以让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按位加1if(buffer==26'd25000000)//判别buffer中的数值为25000000时,16//做输出处理
8、beginled<=~led;//le
此文档下载收益归作者所有