开放性实验报告专业:电子信息工程班级: *电信*班姓名:学号:指导老师:实验一:流水灯一.实验内容利用QUARTUSII软件,构建NIOSII软核系统,编写程序,实现实验箱上LED灯的流水功能。
二.实验原理通过提前设定NIOSII软核处理器的相关寄存器,控制led 的IO 口的高低电平输出及响应间隔时间,从而改变LED的亮灭并达到流水灯效果。
三.实验步骤1.硬件设计(1).构建NIOSII软核NIOSII软核处理器包括cpu,sdram控制器,串行flash控制器,jtag_uart,sysid,pio端口。
(2).PLL模块的构建实验箱的板载有源晶振频率为50MHZ,NIOSII及SDRAM需要100MHZ 的时钟源,因此需要用PLL模块进行倍频。
PLL模块的配置如图所示:输入时钟频率为50MHZ输出时钟c0为输入时钟的2倍频输出时钟c1为输入时钟的2倍频,相位偏移-75度,为SDRAM 提供工作时钟PLL模块:(3).系统连线及引脚分配qsf文件中的引脚分配:set_location_assignment PIN_AF21 -to sdram_addr[0] set_location_assignment PIN_AE20 -to sdram_addr[1] set_location_assignment PIN_AF20 -to sdram_addr[2] set_location_assignment PIN_AE19 -to sdram_addr[3] set_location_assignment PIN_B20 -to sdram_addr[4] set_location_assignment PIN_A21 -to sdram_addr[5] set_location_assignment PIN_B21 -to sdram_addr[6] set_location_assignment PIN_A22 -to sdram_addr[7] set_location_assignment PIN_B22 -to sdram_addr[8] set_location_assignment PIN_A23 -to sdram_addr[9] set_location_assignment PIN_AE21 -to sdram_addr[10] set_location_assignment PIN_B23 -to sdram_addr[11] set_location_assignment PIN_B24 -to sdram_addr[12] set_location_assignment PIN_AE22 -to sdram_ba[0]set_location_assignment PIN_AF22 -to sdram_ba[1] set_location_assignment PIN_AE24 -to sdram_cas_n set_location_assignment PIN_B25 -to sdram_ckeset_location_assignment PIN_AF23 -to sdram_cs_n set_location_assignment PIN_AD25 -to sdram_dq[0] set_location_assignment PIN_AC25 -to sdram_dq[1] set_location_assignment PIN_AC26 -to sdram_dq[2] set_location_assignment PIN_AB25 -to sdram_dq[3] set_location_assignment PIN_AB26 -to sdram_dq[4] set_location_assignment PIN_AA25 -to sdram_dq[5] set_location_assignment PIN_AA26 -to sdram_dq[6] set_location_assignment PIN_Y25 -to sdram_dq[7] set_location_assignment PIN_W26 -to sdram_dq[8] set_location_assignment PIN_V25 -to sdram_dq[9] set_location_assignment PIN_V26 -to sdram_dq[10] set_location_assignment PIN_U25 -to sdram_dq[11] set_location_assignment PIN_U26 -to sdram_dq[12] set_location_assignment PIN_T25 -to sdram_dq[13] set_location_assignment PIN_R25 -to sdram_dq[14] set_location_assignment PIN_P24 -to sdram_dq[15] set_location_assignment PIN_N24 -to sdram_dq[16] set_location_assignment PIN_M25 -to sdram_dq[17] set_location_assignment PIN_L25 -to sdram_dq[18] set_location_assignment PIN_K26 -to sdram_dq[19] set_location_assignment PIN_K25 -to sdram_dq[20] set_location_assignment PIN_J26 -to sdram_dq[21] set_location_assignment PIN_J25 -to sdram_dq[22] set_location_assignment PIN_H26 -to sdram_dq[23] set_location_assignment PIN_G25 -to sdram_dq[24] set_location_assignment PIN_F26 -to sdram_dq[25] set_location_assignment PIN_F25 -to sdram_dq[26] set_location_assignment PIN_E26 -to sdram_dq[27] set_location_assignment PIN_E25 -to sdram_dq[28] set_location_assignment PIN_D26 -to sdram_dq[29] set_location_assignment PIN_D25 -to sdram_dq[30] set_location_assignment PIN_C25 -to sdram_dq[31] set_location_assignment PIN_Y26 -to sdram_dqm[0] set_location_assignment PIN_W25 -to sdram_dqm[1] set_location_assignment PIN_H25 -to sdram_dqm[2] set_location_assignment PIN_G26 -to sdram_dqm[3] set_location_assignment PIN_AE23 -to sdram_ras_n set_location_assignment PIN_AE25 -to sdram_we_n set_location_assignment PIN_F21 -to clk_sdram2.软件设计system.h文件中关于PIO_LED的宏定义#define PIO_LED_NAME "/dev/pio_LED"#define PIO_LED_TYPE "altera_avalon_pio"#define PIO_LED_BASE 0x00001800#define PIO_LED_SPAN 16#define PIO_LED_DO_TEST_BENCH_WIRING 0#define PIO_LED_DRIVEN_SIM_VALUE 0#define PIO_LED_HAS_TRI 0#define PIO_LED_HAS_OUT 1#define PIO_LED_HAS_IN 0#define PIO_LED_CAPTURE 0#define PIO_LED_DATA_WIDTH 8#define PIO_LED_RESET_VALUE 0#define PIO_LED_EDGE_TYPE "NONE"#define PIO_LED_IRQ_TYPE "NONE"#define PIO_LED_BIT_CLEARING_EDGE_REGISTER 0#define PIO_LED_BIT_MODIFYING_OUTPUT_REGISTER 0#define PIO_LED_FREQ 100000000#define ALT_MODULE_CLASS_pio_LED altera_avalon_pio利用system.h文件编写sopc.h,通过操作结构体PIO_STR完成对PIO_寄存器的操作。
sopc.h文件:#ifndef SOPC_H_#define SOPC_H_#include"system.h"#define _LEDtypedef struct{unsigned long int DATA;unsigned long int DIRECTION;unsigned long int INTERRUPT_MASK;unsigned long int EDGE_CAPTURE;}PIO_STR;#ifdef _LED#define LED ((PIO_STR *)PIO_LED_BASE)#endif#endifMain.c文件全部源码:#include <stdio.h>#include <unistd.h>#include"../inc/sopc.h"int main(){int i;while(1){for(i = 0;i <8 ;i++){LED->DATA = ~(1<<i);usleep(500000);}}return 0;}实验二:数码管显示一.实验内容利用QUARTUSII软件,构建NIOSII软核处理器系统,在NIOS IDE 软件中编写程序,实现实验箱上数码管的动态显示。