fpga设计与应用:智能小车设计方案
可以支持标准C。 NiosⅡIDE编译环境自动地生成一个基于用户特定系统配置(SoPC Builder生成的SoPC文件)的makefile,有利于程序的开发。
NiosⅡIDE包含一个强大的、在GNU调试器基础之上的软件调试器——GDB。完成软件代码的编写后,可以对代码进行仿真和调试。Nios-Ⅱ IDE提供了一个方便的闪存编程方法。任何连接到FPGA的兼容通用闪存接口(CFI)的闪存器件都可以通过NiosⅡIDE闪存编程器来烧结。针对本设 计及应用,编写了系统控制程序和LCD显示程序。流程图如图3所示。
系统调试
小车系统需要测试能否准确接收控制台发送的指令并控制小车运动或停止,以及向前、后、左、右转向。还要测试主控机能否准确接收小车采集到的温度以及湿度 信息,能否正确显示。经过多次测试,发现由于系统程序是采用收发循环转换的模式,为了让两个系统能够收到对方发的信息,对小车的遥控与自动部分进行简单的 分化。自动情况下,控制台为主要接收端,小车为主要发送端,一般情况下小车发送数据到控制台,需要自动到遥控的转换时,通过在延时时间内进行中断来实行从 自动到遥控的转换;在遥控状态下,控制台为主要发射端,小车为接收端,一般情况下控制台发送小车行进指令到小车,需要采集数据时,通过温度、湿度采集按键 来对小车进行收发转换,同时小车发出采集数据指令,之后再次转为接收模式。这样做之后使小车与控制台的软件部分清晰明了,小车的行进以及采集显示数据能够 实时的进行。
湿度测量系统需要测试是否能够精准输出频率值。采用芯片LM555手册上推荐的电路,由于元件的误差,使输出的频率并不精 确,经过与标准的湿度仪进行比对,通过参数调整,用直线做近似,最后得到的频率值误差在几赫兹(频率范围是6 008~7 314Hz),经过预算得到很准确的湿度值。开始求湿度值时用的是解一元三次方程的方法,由于计算量大,对小车的行进会有很大影响,后来在小车端只是把小 车采集到的频率值通过红外天线传输到主控端,并将原先的小车自动避障由NiosⅡCPU控制改为由Verilog编写的硬件模块控制,最后在控制台做湿度 值的计算。这样的更改既减少了小车NiosⅡCPU的工作量,同时由于小车的自动避障改为由独立的Verilog模块控制,运行起来很流畅。
对于无线收发系统,要测试其可靠性以及发送或接收的信息的准确性。测试方法是单独设计了一个软核下载到SoPC中,并编写一段程序用于测试是否正确写入 配置控制字,是否能够进行ShockBurst模式的接收或发送。问题是对天线各模式时序的把握,一开始写的程序总是不能正确写入配置字,反复调试,并用 数字示波器观察写入配置字的瞬间过程以及各延时的时间,最后测试成功,并把发送或接收的状态用LED显示出来,每发送或接收到一个数据包就让LED闪一 下。
结语
本设计以FPGA嵌入NiosⅡ软核处理器为核心,辅以必要的外围 电路,构成了高度集成化的片上系统。另外,SoPC系统的柔性配置,使得可以基于此系统扩展片外存储器和多路输出。设计的小车具有较强的避障能力,且能通 过接收端对其进行方便的控制,温度和湿度采集均达了较高的精度,并且能实现动态显示,无线收发模块的有效范围最远可达300 m,可应用于较为恶劣的环境,可代替人进行温度和湿度的实地检测。
fpga 相关文章:
- 用大电流LDO为FPGA供电需要低噪声、低压差和快速瞬态响应(08-17)
- 基于FPGA 的谐波电压源离散域建模与仿真(01-30)
- 基于FPGA的VRLA蓄电池测试系统设计(06-08)
- 降低从中间总线电压直接为低电压处理器和FPGA供电的风险(10-12)
- FPGA和功能强大的DSP的运动控制卡设计(03-27)
- DE0-Nano-SoC 套件 / Atlas-SoC 套件(10-30)