可编程逻辑器件FPGA(CPLD)课程设计 DE2

上传人:工**** 文档编号:511263885 上传时间:2023-02-16 格式:DOCX 页数:21 大小:80.04KB
返回 下载 相关 举报
可编程逻辑器件FPGA(CPLD)课程设计 DE2_第1页
第1页 / 共21页
可编程逻辑器件FPGA(CPLD)课程设计 DE2_第2页
第2页 / 共21页
可编程逻辑器件FPGA(CPLD)课程设计 DE2_第3页
第3页 / 共21页
可编程逻辑器件FPGA(CPLD)课程设计 DE2_第4页
第4页 / 共21页
可编程逻辑器件FPGA(CPLD)课程设计 DE2_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《可编程逻辑器件FPGA(CPLD)课程设计 DE2》由会员分享,可在线阅读,更多相关《可编程逻辑器件FPGA(CPLD)课程设计 DE2(21页珍藏版)》请在金锄头文库上搜索。

1、PLD期末课程设计NIOS II开发姓名:李超学号:PB10011049邮箱:第一章简介1-1硬件开发NIOS II硬件开发主要是通过使用Qsys构建NIOSII软核,软核主要包括以下儿 个部分:1. NIOS II Processor2. PLL3. clock4. sysid5. sdram controller6. LCD7. timer8. ps29. seg710. led11. key12 jtaguart其中使用 了 DE2-115 SystemCD 中官方范例的 IP 和 altera university program 提 供的IP。1.2软件开发NIOS II的软件开发部

2、分主要实现了以下儿个功能:1. 点亮LED2. KEY中断3. 定时器中断4. 七段数码管5. LCD显示字符6. PS2键盘7. PS2鼠标1.3基本系统搭建DE2-115板子上提供的时钟只有50MHz,利用PLL产生三路时钟,clkO为 100MHz提供给CPU和需要高速时钟的模块,如:SRAM、SDcard、Jtag_uart 等;clkl为相移-65。的100MHz,提供给SDRAM: Mclk2为10MHz提供给那 些不需要高速时钟的模块,如:key Jed, led, timer ps2等。这样就可以根据系 统的需要來选择不同的时钟。CPU选择NIOS II/f型,储存单元选择SD

3、RAMo第二章基本功能开发2.1点亮LED在Qsys中添加PIO模块,由于红色LED有18个,所以PIO模块中width选 择18, direction选择output,其他不变,如下图所示。编译、分配管脚等步骤后,在NIOSIIIDE中system.h可以看到关于LED的相 关宏定义。根据LED.BASE就可以读写相应寄存器,实现LED的打开和熄灭。 利用PIO读写函数实现了下面儿个函数,用來控制LEDovoid led(int temp)/根据temp的每一个bit决定么个LED的状态。/如temp = 5即0101,则第1个LED和第三个LED点亮,其他熄灭 IOWR_ALTERA_AV

4、ALON_PIO_DATA(LEDR_BASE, temp);void led_on(int i) /将第 i 个 LED 点亮。_int temp = IORD_ALTERA_AVALON_PIO_DATA(LEDR_BASE); IOWR_ALTERA_AVALON_PIO_DATA(LEDR_BASE, temp|li); - void led_off (int i) 将第 i 个 LED 点亮。 int temp = IORD_ALTERA_AVALON_PIO_DATA(LEDR_BASE); IOWR_ALTERA_AVALON_PIO_DATA(LEDR_BASE, temp&(

5、li); void led_toggle(int i)/将第i个LED的状态去反。即由点亮变熄灭,由熄灭变 点亮if(tagi = 0)/如果为熄灭tagi=l;/点亮 led_on(i);else 如果为点亮tagi=0; 熄灭ledoff(i);利用上述函数实现一个简单跑马灯,程序如下所示:while (1)for (int i = 0; i countl % 10 + 0); /七段数码管显示数字SEG7_show(0, countl / 10 + 0);TIMER_0_counter = 0;countl+;/*计时器中断初始化程序,周期lms*/void timer_irq_init

6、(int hour, int min, int sec)TIMEROcounter = 0;countl = 0;timel0 = sec;timell = min;timel2 = hour;IOWR_ALTERA_AVALON_TIMER_CONTROL(TTMER_0_BASE,ALTERA_AVALON_TIMER_CONTROL_START_MSK | / START =1ALTERA_AVALON_TIMER_CONTROL_CONT_MSK |/ CONT = 1ALTERA_AVALON_TIMER_CONTROL_ITO_MSK);alt_irq_register(TIMER

7、_0_IRQ? 0, timer_isr);2.4七段数码管在Qsys中添加SEG7模块,这个模块来自DE2-115 SystemCD中官方范例的IP, 参数默认即可,具体参数如下所示:Parameters由于SEG7模块本质就是PIO,所以只需要PIO读写操作就可以控制SEG7, SEG7_show函数实现在数码管上显示字符。代码如下所示:2.5 LCD在 Qsys 中添加 16x2 Character Display 模块,该模块来自 Altera University Programo实现了清零、显示字符宙的功能。:* clear the lineI:*/j void lcd_clear(int line)IIalt_up_character_lcd_set_cursor_pos(char_lcd_dev, 0? l

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号