SOPC课程设计报告 - 图文

更新时间:2024-04-10 22:28:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中国地质大学(武汉) 机电学院电子信息工程专业

片 上 系 统 设 计 报 告

指导老师: 小组成员: 日 期:

设计题目:基于NIOSII软核的两轮自平衡小车

摘要:本设计采用FPGA的SOPC技术利用在FPGA内部构建NIOSII软核并在软核中例化定时器模块、PWM模块、UART模块和外部中断等特定的IP核。在规定10ms周期内CPU需要完成采集MPU6050陀螺仪和加速度计的数据,通过卡尔曼滤波计算出小车的姿态;通过外部中断触发方式采集电机自带编码器的输出脉冲信号,计算当前小车左右轮子车速;采用PID闭环控制算法,计算出维持车身姿态的电机驱动信号PWM波的占空比,驱动电机实现小车平衡。

关键词:FPGA;SOPC;NIOSII;

核;陀螺仪;卡尔曼滤波;PID算法 IP

1.系统方案

1.1 系统结构

1.1.1 系统总体框架

JTAG_UARTMPU6050 SOPC最小系统EPCSCPUSDRAM电机驱动减速电机电机自带编码器内置外设蓝牙无线收发图1 系统整体框图

此设计的二轮平衡车系统主要分为以下功能模块:

(1)Nios II软核:用来读取各传感器数据,进行算法运算,产生控制信号维持平衡车姿态。

(2)JTAG_UART:用来下载程序和调试软件各部分功能。

(3)MPU6050:六轴姿态传感器,内部集成三轴陀螺仪和三轴加速度计,用以检测小车姿态。

(4)蓝牙无线收发:连接Nios II软核中的串口内置外设,用以将传感器数据发送给上位机,来进行小车算法调试。

(5)电机驱动:用来将Nios II软核输出的PWM信号转换成电机驱动电流,驱动大功率电机正常运转。

(6)电机自带编码器:用来检测小车左右两个电机的转速,反馈给软核用于下一步运动的解算。

本设计利用FPGA的SOPC功能在FPGA芯片内部利用SOPC Builder设计符合系统要求的Nios II软核,在顶层文件中添加该软核和其他一些硬件资源(PLL,逻辑单元等)并完成引脚分配,最终实现实际电路的综合,配合Nios II IDE开发软件,开发系统软核实现控制二轮小车直立等动作。

1.2.NIOS II软核

1.2.1 Nios II软核整体框架

本系统根据两轮自平衡小车设计的实际需求,采用黑金动力的Cyclone IV代核心板提供核心控制。系统的硬件由一块FPGA 芯片、MPU6050、电机驱动模块、编码及编码整形电路、外部存储SDRAM、外部串行FLASH (EPCS64)等几个模块构成。FPGA 芯片主要实现Nios II 软核处理器和各种接口驱动等功能,其包括 Nios II 系统和外设两部分。Nios II 系统包括 Nios II 处理器、存储器、定时器、通用串行通讯接口、I2C接口、PWM接口和连接各个组件的Avalon 总线。其中I2C Interface 实现与MPU6050的通信,PWM接口实现电机的速度控制,带中断的PIO实现速度编码器的信号捕获,实现车模的速度测量和运动方向测量,定时器Timer为系统控制提供精确的定时周期,通用串行通讯接口用于系统算法的调试。软核整体结构,如图2所示。

JTAG_UARTModulePLL时钟信号Nios IIProcessor Core复位信号I2CInterfacePWMInterfaceAvalon Switch FabricMPU6050BTS7960电机驱动Interface toUserLogicTimerEPCSMemoryEPCSControllerPIO编码器PIO(INT)SDRAMMemorySDRAMControllerPIO4*LEDUART蓝牙

图2 Nios II系统框图

1.2.2 Nios II软核使用资源

根据硬件结构及设计需要,使用Quartus II的SOPC Builder构建了一个Nios II 软核,除了建立了系统需要的硬件资源控制器如Nios II Processor、SDRAM、EPCS、JTAG UART调试模块;还为系统配备了硬件需要的接口如I2C接口、PWM控制器、电机方向控制接口、电机编码器输入接口等,为了方便调试;系统还预留了一些方便测试使用的LED接口、PIO_TEST测试专用接口等。具体使用资源如下图所示。

图3 CPU选型及存储配置

图4 NIOS II 软核资源

图5 NIOS II 软核资源(续)

1.2.3 Nios II软核顶层文件和管脚分配

通过创建新的.bpf文件作为工程的顶层文件,在此文件中以图形方式进行Nios II软核例、PLL锁相环的配置和例化并进行相应的连线。运行TCL脚本文件,实现NIOS II软核各接口引脚与外部硬件的真正互联,并对一些输入输出信号做相应的初始化。通过Pin Planner进行引脚连接情况的检查。具体使用情况如下图所示,图6为整体系统及接线情况,图7为整体引脚分部(此处使用的是黑金FPGA开发板提供的脚本文件)。

图6 bpf文件中的连接情况

图7 实际管脚分配

图8 第一次构建软核成功后编译通过内部资源使用情况

1.3硬件选型及系统主要电路设计

1.3.1黑金核心板硬件资源

本设计采用黑金的Cyclone IV核心板,能够最大限度的减小控制板占用的空间,同时核心板上集成有丰富的硬件存储资源和大量的外置引脚,功能完善,且能独立工作,适合此次课程设计的需求。另外,配套资料非常丰富,适合我们初学者上手。图9为核心板图片展示及资源。

图9 黑金FPGA核心板

1、FPGA: EP4CE15F17C8N 2、SDRAM: 256Mbit (16M*16bit) 3、SRAM: 4Mbit (256K*16bit) 4、串行FLASH: 64Mbit (EPCS64) 5、并行FLASH: 32Mbit (4M*8bit) 6、排座: 2.0mm 22*2 7、双晶振: 50M/40M

8、IO数量: 扩展出的IO口有110根 9、下载方式: 支持AS模式和JTAG模式 10、自定义指示灯: 4个 11、复位按键: 1个 12、下载指示灯: 1个

1.3.2 姿态传感器MPU6050

MPU-60X0 是全球首例9 轴运动处理传感器。它集成了3 轴MEMS 陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C 或SPI 接口输出一个9 轴的信号(SPI 接口仅在MPU-6000 可用)。MPU-60X0 也可以通过其I2C 接口连接非惯性的数字传感器,比如压力传感器。

MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。图10为MPU6050模块电路图

图10 MPU6050模块电图

1.3.3 电动机选型

本设计选用自带光电式编码器的直流减速电机冯哈勃Faulhaber空心杯减速电机2342L012,通过自带光电式编码器检测电机转动速度和转向,从而闭环控制小车运动。直流减速电机Faulhaber2342L012 输出功率17W,减速器减速比64:1,驱动能力及转速均完全满足二轮车直立的需求。自带光电式编码器HEDL5540,带线驱动,数字信号输出,每旋转一周输出12*64个脉冲,精度高,抗干扰能力强,易于单片机处理。直流减速电机和光电式编码器一体化,构成闭环控制电路,稳定控制平衡车姿态。 电机参数如下:

型 号:德国冯哈勃Faulhaber带编码器空心杯减速电机2342L012 工作电压: 12V

空载转速:8100RPM(转每分钟) 减速后速:120RPM(转每分钟) 直 径:30mm 电机长度:42mm 总共长度:85mm 出轴直径:6mm 出轴长度:35mm 输出功率:17W

扭 矩:大扭矩( 1.72Nm) 空载电流:75mA 堵转电流:1400mA

减速箱型号:日本定制(全金属精密行星减速箱) 减速比:64:1 编码器:光电式

输出路数:AB双路输出

每圈脉冲:12CPR(脉冲每圈)[可以改装其他高分辨率的光电编码器]

1.3.4测速功能电机自带编码器

通过电机自带的编码器模块,输出两路相差90°的方波信号,将此信号经过施密特触发器整形后输出陡升陡降的方波接入FPGA进行处理。当电机正转,第二个脉冲落后90°,此时第一个脉冲触发中断信号,在中断处理函数中判断第二个脉冲信号的高低电平就能测算数电机转向和转速。

图11 电机编码器接线图

方波信号整形采用CD40106由六个施密特触发器电路组成,利用其中四个作为左右两个电机的编码器输出信号整形,然后对整形后的信号进行限幅。采用二极管进行钳位,利用二极管的钳位作用,将5V电平转换为3.3V电平,R1的作用是限流,但串联了限流电阻R1会降低输入开关的速度。采用此电路时,会通过二极管D1向3.3V电源输入电流,如果电流过高可能会使3.3V电源电压超过3.3V。CD40106内部原理和钳位电路原理如下图所示。

图12 CD40106内部原理

图13 二极管钳位电路

1.3.5电机驱动

减速直流电机的驱动采用经典的H桥电路,使用两片BTS7960搭建成一个完整的H桥控制电路控制一个电机。BTS7960是NovalithIC家族三个独立的芯片的一部分:一是p型通道的高电位场效应晶体管,二是一个n型通道的低电位场效应晶体管,结合一个驱动晶片,形成一个完全整合的高电流半桥。所有三个芯片是安装在一个共同的引线框,利用芯片对芯片和芯片叠芯片技术。电源开关应用垂直场效应管技术来确保最佳的阻态。由于p型通道的高电位开关,需要一个电荷泵消除电磁干扰。通过驱动集成技术,逻辑电平输入、电流取样诊断、转换速率调整器,失效发生时间、防止欠电压、过电流、短路结构轻易地连接到一个微处理器上。BTS7960可结合其他的BTS7960形成全桥和三相驱动结构。图框如下:

图14 BTS7960内部原理结构图

本设计的电机驱动电路图如下:

图15 两片BTS7960搭建的H桥电路

2.理论分析与计算

2.1电动机性能分析

本设计选用自带光电式编码器的直流减速电机冯哈勃Faulhaber空心杯减速电机2342L012,通过自带光电式编码器检测电机转动速度和转向,从而闭环控制小车运动。直流减速电机Faulhaber2342L012 输出功率17W,减速器减速比64:1,驱动能力及转速均完全满足二轮车直立的需求。自带光电式编码器HEDL5540,带线驱动,数字信号输出,每旋转一周输出12*64个脉冲,精度高,抗干扰能力强,易于单片机处理。直流减速电机和光电式编码器一体化,构成闭环控制电路,稳定控制平衡车姿态。

2.2车模姿态检测

本设计车身姿态检测采用MPU-6050模块(三轴陀螺仪+三轴加速度),MPU6050是目前飞行器、二轮自平衡车和倒立摆等应用中姿态检测最为普遍的选择方案,有完整的开发资料,考虑到电子陀螺仪存在很大的零飘,而加速度计需要校正,所以采用同时读取陀螺仪和加速度计的数据再通过卡尔曼滤波对陀螺仪和加速度计的值进行滤波,得到稳定的车身姿态信息。经测试,该方法稳定性好,数据波形稳定。

2.3驱动与控制算法

本设计基于PID控制算法实现对二轮直立车模的稳定控制。系统由PID控制器和被控对象组成,PID控制系统原理框图如图16所示。

比例+rin(t)error(t)微分-积分 被控对象yout(t)

图16 PID控制系统原理框图

PID控制器是一种线性控制器。图 16中,假设系统的给定值为rin(t),实际输出值为yout?t?,根据给定值和实际输出值构成控制偏差error?t?:

error?t??rin?t??yout?t?

(公式1)

PID的控制规律为:

TDderror?t?1u(t)=Kp(error(t)+?error?t?dt?) (公式2)

T10dt1传递函数的形式:

G(s)=U(s)1=kp(1++TDs) (公式3)E(s)T1S

式中,Kp是比例系数,T1是积分时间常数,TD是微分时间常数。

PID控制器各部分校正环节的作用如下:

(1)比例环节:反比例的控制系统的偏差信号 error?t?,偏差一旦产生,控制器立即产生控制作用,以减少偏差。

(2)积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数T1,T1越大,积分作用越弱,反之则越强。

(3)微分环节:反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。

本装置属于单输入多输出系统,采用PID双回路控制,选MPU6050采集车身姿态、编码器采集车轮子转速作为反馈信号,此方案中,不仅对系统的车身姿态进行闭环控制,而且对小车车速也进行闭环控制,考虑到车身平衡是与车轮与地面摩擦系数等一系列因素有关,本设计控制参数主要是在自由摆运动理论的基础上通过实验测试获得。系统PID双回路控制结构图如图17所示。

r1+- e1PID控制器+ u旋转倒立摆αr2+ e2+PID控制器β-

图17 双回路PID控制结构图

4.NIOS II软件程序设计

4.1 软件整体框架

主程序框图如图18所示:

开始串口初始化MPU6050初始化流水灯延时(使陀螺仪稳定)编码器中断初始化PWM模块初始化定时器中断初始化while(1)YNif(timflag == 1)Y倾角计算N电机位移计算计算PWM值测试I/O电平翻转蓝牙输出姿态信息结束图18 主程序框图

图18中,程序上电运行后,便进行初始化。初始化包括两部分:一个是NIOSII应用的各个模块的初始化,如MPU6050初始化、串口初始化;另一个是应用程序的初始化,如定时器初始化、中断初始化、PWM初始化等。

初始化完成后就启动了车模的平衡控制,车模可以根据自身的状态信息进行闭环控制,使车模维持平衡。

启动了车模平衡控制后,主程序就进入了主循环,程序在主循环中不停检测定时器中断中置为的标志位,当检测到标志位证明定时时间到达,这时进入处理流程,计算车模姿态信息,计算当前电机位移和车速,PID计算PWM值,蓝牙输出MPU6050采集到的姿态信息,方便进行车模的调试。

使用 NIOSII软核 的一个定时器,产生以10ms为周期的中断。定时器中断服务中只是将定时器标志位timflag置位,然后清除中断标志,使下一次的中断触发正常进行。

4.2主要函数说明

4.2.1初始化部分的函数说明

初始化部分的函数主要是在系统上电开始的时候,给系统各个变量、应用到的各个模块、应用程序进行初始化,方便后续程序的正常运行,这里主要介绍各个模块和应用程序的初始化。

1、 InitMPU6050():MPU6050初始化函数(mpu6050.h)

MPU6050作为整合三轴加速度和三轴陀螺仪的姿态感知传感器,为了后续正常使用这个模块,在初始化时需要对MPU6050芯片的寄存器做简单的配置,对它的操作使用I2C总线实现。主要包括:

1、解除休眠状态;

2、设定陀螺仪采样率:125Hz;

3、设定陀螺仪测量范围:2000deg/s 5Hz; 4、设定低通滤波频率: 5Hz;

5、设定加速度加速度测量范围:2G; 6、设定高通滤波频率: 5Hz;

2、 PWM_init():PWM软核的初始化函数(motor.h)

PWM脉宽调制是电机控制的重要手段,本设计的PWM模块是利用学长资料中写好的PWM的IP核,初始化时主要有两个任务:

1、 设定PWM的周期(频率):10KHz; 2、 使能PWM模块;

3、 Init_speed_left_int():左轮编码器测速中断的初始化函数(右轮同理) 电机速度的编码器使用正交编码,我们利用其中一路信号作为中端请求信号,以此信号进行速度测量,我们通过在中断中采集另一路信号的的电平来测量速度的方向,初始化的任务主要有三个:

1、 使能外部中断; 2、 清除中断标志;

3、 注册中断服务程序:SPEED_LEFT_ISR; 4、 Init_timer():定时器初始化函数

程序的控制算法是在时间上严格精确的,所以在系统中使用了定时器,这样使程序运行按照精确的控制周期执行,通过调节定时器的定时周期,我们就可以得到需要的控制周期,定时器的初始化主要任务有三个:

1、 设定定时器定时周期:10ms;

2、 设定定时器控制寄存器:产生IRQ、连续模式、启动定时器; 3、 注册定时中断服务程序:TIMER_ISR;

4.2.2平衡控制部分的算法和函数说明

本设计利用角度PID和速度PID双反馈来控制小车姿态,使小车维持平衡。单纯的角度控制,因为无法获得电机的速度,不能得到小车的准确状态(只知道角度和角速度,不知道小车本身的运行速度),在小车在低速可以时利用此PWM进行控制,但是一旦小车速度较大以后,小车就会失去控制,最后倒下。在加上速度PID控制环时,就避免了这种情况的发生,小车会根据当前速度和角度以及角速度的信息计算控制电机的PWM,电机速度的调整是以现有速度作为参考的,减小了小车速度带来的误差。

以上平衡控制主要用到的函数主要有以下几个:

1、 Angle_Calcu():角度计算函数

角度计算函数中首先通过I2C总线利用GetData(alt_u8 REG_Address)函数读取MPU6050传感器的X轴加速度信息,测量范围为2g时,读取的寄存器值与重力加速度的的换算关系为16384 LSB/g,转换完的加速的值设为a。再根据加速度信息计算角度信息。加速度和角度的关系为a=g*sinθ,由此我们可以得到角度的正弦值sinθ=a/g。在倾斜角度比较小时sinθ≈θ,式中θ为弧度,再根据角度和弧度的转换关系:deg=rad*180/3.14,将弧度转换为角度,设为Angle_ax。

类似的,通过I2C总线利用GetData(alt_u8 REG_Address)函数获得Y轴的角速度信息,测量范围为2000deg/s时,读取的寄存器值与角速度的换算关系为16.4 LSB/deg/s,转换完就得到了车模的角速度,设为Gyro_y。 最后通过Kalman_Filter (Angle_ax,Gyro_y):卡尔曼滤波函数进行角度和角速度的滤波处理。

2、 GetData(alt_u8 REG_Address):角度、角速度获取函数 角度和角速度的获取函数是通过I2C总线读取MPU6050芯片相应的寄存器值得到,寄存器地址即为形参REG_Address的值。在MPU6050中,角度和角速度的值都是16位的ADC转换后得到的16bit 数据,但是I2C总线每次只能读取8bit数据,所以在本函数中做了8bit数据到16bit数据的整合工作,最后返回整合后的16bit值。

I2C通信是根据I2C通信协议,并参考MPU6050数据手册,使用FPGA的PIO模拟的,I2C通信协议以及MPU6050的操作函数都在头文件MPU6050.H中,该头文件为自己编写,主要内容就是I2C通信协议和MPU6050的操作函数,这里就不过多介绍了。

3、 Kalman_Filter (Angle_ax,Gyro_y):卡尔曼滤波函数 卡尔曼滤波器由一系列递归数学公式描述。它们提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波器应用广泛且功能强大:它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。

卡尔曼滤波器用反馈控制的方法估计过程状态:滤波器估计过程某一时刻的状态,然后以(含噪声的)测量变量的方式获得反馈。因此卡尔曼滤波器可分为两个部分:时间更新方程和测量更新方程。时间更新方程负责及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计。测量更新方程负责反馈——也就是说,它将先验估计和新的测量变量结合以构造改进的后验估计。时间更新方程也可视为预估方程,测量更新方程可视为校正方程。最后的估计算法成为一种具有数值解的预估-校正算法。 图19卡尔曼滤波循环更新

4、 Psn_Calcu():速度和位移计算函数

位移和速度的计算是在定时中断服务程序中读取速度计数值并清零,速度的累计值(积分)作为位移值,控制程序中将利用计算得到的速度值和位移值作为速度反馈,计算驱动电机的的PWM。

5、 PWM_Calcu():电机PWM计算函数

该函数首先判断小车倾斜角度是否大于40度,当小车倾斜角度大于40度时,小车基本无法再维持平衡,所以先关闭电机,避免损坏车模和主控电路。

当车模倾斜角度小于40度时,PWM计算函数使用了PID控制算法计算驱动电机需要的PWM。PID算法中:

① 首先把角度信息乘以比例因子作为角度反馈的比例项,再把角速度信息

乘以微分因子作为角速度反馈的微分项,这两部分求和作为角度和角速度的PD控制;

② 然后把速度和位置乘以相应的比例因子并求和作为速度反馈的比例控

制;

③ 最后把角度反馈环和速度反馈环的值求和作为控制电机转动的PWM输

出;

6、 PWM_motor(alt_32 pwm_l,alt_32 pwm_r):PWM驱动控制函数

(motor.h)

PWM_motor函数式根据传递过来的两路PWM信号控制电机实现相应的转动。该函数主要有三个任务:

④ 根据传递过来的参数的正负判断电机转动方向; ⑤ 调用转动方向设置函数;

⑥ 设置控制电机驱动的PWM值;

遇到过的问题:

1、 顶层文件由.v文件改为了.bpf文件形式:因为黑金动力提供的这款核心

板的资料中找不到用于Nios开发的.v文件为顶层的资料,所以就按照黑金动力提供的Nios学习教程中的方式通过.bpf文件构造自己的硬件结构。在这个过程中我用到了上个学期学习的Verilog的知识,将学长资料中的工程从.v形式转换成了.bpf形式。

2、 添加自定义IP核过程中遇到的问题:工程中用到了输出电机驱动信号

PWM波的自定义IP核,IP核的三个.V文件在学长资料里是有的,但在按照《FPGA与SOPC设计教程—DE2实践》中所给的例子在添加的过程中出现了一些interface和single type选择类型的错误,原因是自己对avalon总线的理解不明确,不理解他的信号分类,后来在网上查了很多资料,看了很多相关的博客也向老师讨论了这个问题后来才成功添加了IP核。在这个过程中出现过一些问题,就是前一天晚上调试例程时,使用new component功能还正常,第二天发现这个功能不正常了,总是提示添加的.v文件中找不到module模块。让我困惑了好久,后来才找到问题,原因是前天晚上在使用new component功能时360提示我在Quarters安装目录下发现木马文件,自动清除了,就这样软件遭到了破坏,后来重新安装了Quarters顺利添加了IP核,也把DE2资料中自带的IP核添加到了SOPC Builder原件目录下。

3、 软核内部时钟问题,在刚开始创建的Nios II软核中采用的是在软核内

部例化PLL模块,产生内核和不同外设所需的不同频率时钟再用Avalon-MM Clock Crossing Bridge连接不同的外设到内核,但是在软件测试时出现了部分外设工作不正常(MPU6050调试成功能够通过串口返回数据,但是定时器中断和外部中断初始化不成功,无法启动)。后尝试修改软核结构,将PLL在外部构建,在顶层文件中例化,Nios II软核内部所有外设均采用统一的100MHz,后测试通过,各部分均工作正常。

4、 软核性能问题:在实际软件工程中测试发现,Nios II自带的us级延时

函数存在很大偏差,后查资料发现,软核级别越低偏差越明显。后来采取自己编写空操作的延时,才使MPU6050初始化时序正常执行。 5、 在这次课程设计中遇到的最大的问题就是硬件问题,在FPGA中构建Nios

II软核,虽然能够在外设和CPU内部资源配置上提供很大的便利,但是自己构建的内核在稳定性方面还有很大的缺陷,也体现出自己能力的欠缺,每一次程序调试通不过的时候都会感觉是因为内核构建的不合理造成的,花了很多时间在硬件上,造成最后算法上的调试时间不够。更体现了自己能力的欠缺。再一个就是开发环境复杂并且与自己的win7系统兼容性问题,严重影响了工作进度,大量的时间耗费在搭建开发环境和编译工程上面,笔记本来开发FPGA的Nios II感觉有点儿太力不从心了。

总结:这次的课程实习,是对自己上课学习的总结和提高,《FPGA与SOPC设计教程—DE2实践》这本书很多开发流程上的讲解很透彻,但是有些地方例如添加自定义IP核这里有很多缺陷,对Avalon结构的讲解也没能看的很明白。但是很适合自己这种初学者上手做自己的第一个简单基础实验。因为手头上没有DE2的板子,只有一块DE0和两块黑金的核心板,所以题目也选择用这几块开发板来做。自己最开始接触Nios II软核时只能按照教程中的步骤按部就班一步一步来走不敢有自己的修改,出现错误也不知道该怎么解决,经过这次的实习,自己对软件开发流程有了更清楚的了解,对整个工程中各个文件的理解也进一步加深,自己也尝试了多种软核构建方法和程序下载运行的存储介质的转换,对微机中各个部分的功能有了大体认识,同时也体现出很多方面的不足,比如编程能力方面和Verilog语言基础方面,通过这次的实验也培养了自己解决问题的能力也培养了自己的学习兴趣。在这里感谢王家豪老师的细心指导,在我遇到无法解决的问题的时候给我提供了很大的帮助和鼓励!

参考文献

[1] 夏宇闻. Verilog 数字系统设计教程[M]. 北京:北京航空航天大学出版社,2008年6月.

[2] 张志刚. FPGA与SOPC设计教程—DE2实践[M]. 西安:西安电子科技大学出版社,2007.4(2011.2重印)

[3] 卓晴 黄开胜 邵贝贝.《学做智能车——挑战“飞思卡尔”杯》[M].北京航空航天大学出版社,2006年8月

本文来源:https://www.bwwdw.com/article/qpur.html

Top