




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
按键控制指示灯 一、设计要求1. 掌握基本的开发流程 2. 熟练掌握QUARTUS II软件的使用3. 进一步熟悉NIOS II软件的使用4. 熟悉基本I/O口的软件编程方法5. 在实验的基础上再加至少两个功能二、设计内容 1)选用拨键开关作为输入控制; 2)在控制核心板上LED的基础上,再实现控制实验箱上16个LED。3、 设计思路与方案 思路:使用2个按键作为输入,4位核心板上LED灯作为输出,16位实验箱上LED作为输出;再对键值的查询,选择相对应的键值处理模块。按下1号键4个核心板上LED正向循环点亮,16个实验箱上LED正向循环点亮,进行流水灯控制;按下2号键时,4个核心板上LED无规则的循环亮灭,16个实验箱上LED每八个一组,每组同时向中间聚后向四周散开,依次循环;两个键同时按下时,核心板上4个LED与实验箱上16个LED灯全亮;无键按下时,核心板上LED第1、3灯亮,实验箱上LED第1、3、5、7、9、11、13、15灯亮。 方案:设置一个键值标志,可以通过对这个键值的查询,选择哪种按键处理。对于流水灯样式,可以采用向右移一位来实现。而对其他花样,则可以通过查表的形式来实现,将所需的花样笔形码放入变表格中就行了。对于按键选择了拨键开关,只需把相应拨键开关的引脚锁定好就行。三、硬件设计步骤1、 在文件目录下建立一个文件夹,命名为;hello_led。之后再建立LED工程文件。2、 点击New Project Wizard菜单中的Next,选择芯片为Cyclone系列的EPIC12Q240C8,如下图1_1所示: 图1_1 设定芯片3、 确认后。点击Quartus II 界面第一行工具栏中的SOPC Builder工具,打开SOPC Builder,进行系统模块生成。主要对CPU、JTAG UART、RAM、TIMER、PIO进行配置设定。4、 特别注意的是,PIO设置时,需要加入两位仅为按键输入的KED_PIO接口,还要加入四位仅为输出的核心板LED_PIO接口和16位仅为输出的实验箱上LED接口,在此命名为LSD_PIO。还有四位的接口输出作为CS138使能启动。5、 SOPC Builder系统设置成如下图1_2所示: 图1_2 在SOPC Builder的系统设置6、 完成基本设置后,点击窗口下方Generate按钮,SOPC Builder根据用户设定不同,在系统生成过程中所执行的操作不同。系统生成后点击“Exit”退出SOPC Builder。7、 将刚才生成的模块以图标形式添加到BDF文件中:在SOPC Builder生成的过程中,会生成系统模块的图标(Symbol),可以将该图标像其它Quartus II图标一样添加到当前项目的BDF文件中。8、 生成的NIOS II的CPU模块如下图1_3所示: 图1_3 CPU模块 9、将模块与输入输出接口相连,连接后如图1_4所示; 图1_4 顶层文件图 10、锁定管脚:新建引脚锁定命令文件,File-New - Other Files - Tcl Script File, 文件的格式和内容如下: #Setup.tcl#Setup pin settingset_global_assignment -name RESERVE_ALL_UNUSED_PINS AS INPUT TRI-STATEDset_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFFset_location_assignment PIN_153 -to clkset_location_assignment PIN_200 -to rstset_location_assignment PIN_42 -to lsd0set_location_assignment PIN_23 -to lsd1set_location_assignment PIN_20 -to lsd2set_location_assignment PIN_18 -to lsd3set_location_assignment PIN_16 -to lsd4set_location_assignment PIN_14 -to lsd5set_location_assignment PIN_12 -to lsd6set_location_assignment PIN_8 -to lsd7set_location_assignment PIN_6 -to lsd8set_location_assignment PIN_4 -to lsd9set_location_assignment PIN_2 -to lsd10set_location_assignment PIN_240 -to lsd11set_location_assignment PIN_238 -to lsd12set_location_assignment PIN_236 -to lsd13set_location_assignment PIN_234 -to lsd14set_location_assignment PIN_228 -to lsd15set_location_assignment PIN_208 -to led0set_location_assignment PIN_207 -to led1set_location_assignment PIN_206 -to led2set_location_assignment PIN_203 -to led3set_location_assignment PIN_50 -to CS1380set_location_assignment PIN_48 -to CS1381set_location_assignment PIN_46 -to CS1382set_location_assignment PIN_44 -to CS1383set_location_assignment PIN_53 -to KEY1set_location_assignment PIN_55 -to KEY0 11、写好之后,点击保存按钮。保存的文件名采用默认名为Tcl_script1.tcl,需要放到当前的工程目录下。然后选择Tools - Tcl Scripts,选择Tcl_script1.tcl,然后点击RUN,管脚约束与锁定就会自动加入了。 12、生成的顶层原理图如下图1_5所示: 图1_5 顶层原理图12、 对工程进行编译,然后接上实验板电源、连上USB下载线,将编译生成的SOF文件下载到目标板上,选择Tools- Programmer目标文件夹下载,选择USB-Blaster模式,通过JTAG口对FPGA进行配置。四、软件设计 开始 程序框图如下: 初始化判断是否有键按下 判断键值无键按下,进行LED无键处理 两键全按下,LED灯全亮二号键按下,进行花样改变操作一号键按下,LED灯进行流水灯操作 结束 程序代码如下: #include system.h#include altera_avalon_pio_regs.h#include alt_types.halt_u8 table=0x01,0x03,0x05,0x07,0x09,0x0f,0x0a,0x0b,0x0c,0x02;alt_u16 table1=0x8181,0x4242,0x2424,0x1818,0x2424,0x4242,0x8181;int main (void) _attribute_ (weak, alias (alt_main);int alt_main (void) alt_u8 led = 0x2; /赋led初值02 alt_u16 led1=0x0002; alt_u8 dir = 0; /赋dir初值0 alt_u8 keydat = 0x03; /赋keydat初值03 volatile int i,j=0; IOWR_ALTERA_AVALON_PIO_DATA(CS138_PIO_BASE, 0x09); / CS138使能启动 while (1) keydat = IORD_ALTERA_AVALON_PIO_DATA(KEY_PIO_BASE); if(keydat & 0x03) = 0x01) dir = 1; / keydat&0011=0x01,按1号键,则dir=1; else if(keydat & 0x03) = 0x02) dir = 0; /keydat&0011=0x02,按2号键,则dir=0; else if (keydat & 0x03) = 0x03) dir = 3; /keydat&0011=0x03,同时按两键,则dir=3; else dir =2; /否则无键按下,则dir=2; if (dir = 1) led = led 1; led1=led11; if(led = 0x00) led = 0x80; if(led1 = 0x00) led1 = 0x8000; / 若dir=1,led右移1位循环; else if(dir = 0) led=tablej; led1=table1j; j+; if(j=10) j=0; /若dir=0,led实现花样 else if(dir = 3) led = 0xff,led1=0xffff; / 若dir=3,8个led全亮; else led = 0x55,led1=0x5555; /否则无键按下,第1、3、5、7、9、11、13、15个LED点亮,第2、4、6、8、10、12、14、16个LED熄灭;IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);IOWR_ALTERA_AVALON_PIO_DATA(LSD_PIO_BASE, led1); i = 0; while (i RUN,系统会自动探测到JTAG连接电缆。在出现的对话框中选择设计所用的电缆USB-Blaster,其它部分使用默认选项,点击RUN后,出现相应的现象。软件设计中遇到的问题及解决方案: 1 、问题:刚开始想用实验箱上的16个LED进行设计,以为将16个LED对应的引脚锁定就可以用了,但是软件编译后下载到FPGA经过调试没有亮,刚开始以为是没赋初值的问题,检查程序后不是这个问题。 解决:后听同学讲必须在程序中加一条CS138使能的语句,IOWR_ALTERA_AVALON_PIO_DATA(CS138_PIO_BASE, 0x09)才能使它亮。 2、 问题:在进行键值处理时,想查询到有按键时进行相应按键处理,比如按键2的时候,核心板上LED和试实验箱上的LED都能被控制。就想在if语句中嵌套一个for语句对16个LED进行花样,处理代码如下:else if(dir = 0) led = led 1; for(i=0;i16;i+) IOWR_ALTERA_AVALON_PIO_DATA(LSD_PIO_BASE, led1); j= 0; while (i1 ; led1=0x5555; 但是不起作用,本来只是那16个LED 没反应而已,现在连核心板上的LED都没反应了。程序编译没问题,只可能是程序结构出现问题了。 解决:可能是for语句的问题,试了几次还是不行,就放弃用for语句实现流水灯,改用查表的方法,只需将花样的笔形码放入表格中就行了。五、设计心得SOPC技术有它自己的优势,它是一种片上系统,即由单个芯片完成整个系统的主要逻辑功
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级网络测试题及答案
- 按揭贷款协议书
- 如何通过数据分析提升品牌策略计划
- 行政管理公共关系活动策划题及答案
- 画板采购合同
- 采购信息整合协议
- 策划机构外包合同
- 车辆维护及出险声明协议
- 股权融资协议
- 公共关系沟通技巧试题及答案
- 泌尿及男性生殖系统超声诊断医专
- 学法减分考试题库及答案500题(12123学法减分题库)
- 氢气站设计规范
- 河南省安阳县农业合作化运动始末
- 造纸操作规程6篇
- 叉车日常保养检查记录表
- YY/T 1544-2017环氧乙烷灭菌安全性和有效性的基础保障要求
- GB/T 6670-2008软质泡沫聚合材料落球法回弹性能的测定
- GB/T 19582.3-2008基于Modbus协议的工业自动化网络规范第3部分:Modbus协议在TCP/IP上的实现指南
- 连续性肾替代治疗(CRRT)详细介绍课件
- 建筑工程质量检测课件
评论
0/150
提交评论