完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
标签 > NiosⅡ
Nios Ⅱ嵌入式处理器是ALTERA公司推出的采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器, 其最大优势和特点是模块化的硬件结构, 以及由此带来的灵活性和可裁减性。本章详细介绍了:Nios Ⅱ的开发应用,设计方案等技术内容。
Nios Ⅱ嵌入式处理器是ALTERA公司推出的采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器, 其最大优势和特点是模块化的硬件结构, 以及由此带来的灵活性和可裁减性。
相对于传统的处理器, Nios Ⅱ系统可以在设计阶段根据实际的需求来增减外设的数量和种类。设计者可以使用ALTERA 提供的开发工具SOPC Builder, 在FPGA(现场可编程逻辑门阵列)器件上创建软硬件开发的基础平台, 也即用SOPC Builder创建软核CPU和参数化的接口总线Avalon。在此基础上, 可以很快地将硬件系统(包括处理器、存储器、外设接口和用户逻辑电路)与常规软件集成在单一可编程芯片中。而且, SOPC Builder还提供了标准的接口方式,以便用户将自己的外围电路做成Nios Ⅱ软核可以添加的外设模块。这种设计方式, 更加方便了各类系统的调试。
Nios Ⅱ嵌入式处理器是ALTERA公司推出的采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器, 其最大优势和特点是模块化的硬件结构, 以及由此带来的灵活性和可裁减性。
相对于传统的处理器, Nios Ⅱ系统可以在设计阶段根据实际的需求来增减外设的数量和种类。设计者可以使用ALTERA 提供的开发工具SOPC Builder, 在FPGA(现场可编程逻辑门阵列)器件上创建软硬件开发的基础平台, 也即用SOPC Builder创建软核CPU和参数化的接口总线Avalon。在此基础上, 可以很快地将硬件系统(包括处理器、存储器、外设接口和用户逻辑电路)与常规软件集成在单一可编程芯片中。而且, SOPC Builder还提供了标准的接口方式,以便用户将自己的外围电路做成Nios Ⅱ软核可以添加的外设模块。这种设计方式, 更加方便了各类系统的调试。
特点
Nios II系列支持使用专用指令。专用指令是用户增加的硬件模块,它增加了算术逻辑单元(ALU)。用户能为系统中使用的每个Nios II处理器创建多达256个专用指令,这使得设计者能够细致地调整系统硬件以满足性能目标。专用指令逻辑和本身Nios II指令相同,能够从多达两个源寄存器取值,可选择将结果写回目标寄存器。同时,Nios II系列支持60多个外设选项,开发者能够选择合适的外设,获得最合适的处理器、外设和接口组合,而不必支付根本不使用的硅片功能。 Nios II系列能够满足任何应用32位嵌入式微处理器的需要,客户可以将第一代Nios处理器设计移植到某种Nios II处理器上,Altera将长期支持现有FPGA系列上的第一代Nios处理器。另外,Altera提供了一键式移植选项,可以升级至Nios II系列。Nios II处理器也能够在HardCopy器件中实现,Altera还为基于Nios II处理器的系统提供ASIC的移植方式。
基于NiosⅡ的数字示波器的设计与实现
在电子技术领域中,示波器的应用非常广泛,使用它可以方便直观地观察到信号的全貌,并测量信号的幅度、频率、周期等基本参数。传统的模拟示波器显示时采用荧光物质的余辉时间都是一定的,导致其难以观测到周期较长的信号。另外,模拟示波器还无法对信号进行一些特殊的数学处理(如FFT)。而数字示波器正好可以克服模拟示波器的不足,它采用各种先进的测量技术来满足各种应用。如基于采样原理,采用高速A/D转换器实现高速数据采集,将模拟信号数字化,然后借助处理器强大的数据处理能力实现各种数字信号处理算法,将波形以图形的方式直观地显示出来,并能够得到被测信号各种丰富的参数。
1 系统总体方案
本设计的系统框图如图1所示,得益于FPGA的灵活性,系统的大部分功能都在FPGA内部完成,使得整体结构非常简洁。外围电路主要包括A/D转换模块、LCD显示器、SD卡、FLASH和按键。
A/D转换模块的功能是实现模拟信号到数字信号的转换;FLASH模块的功能是存储SoPC(System-on-a-Programmable-Chip)片上系统的固件程序;SD卡模块的功能是实现测量信息的长期、大量存储,提供与PC机的接口,便于后期在计算机上进行分析;LCD模块的功能是对测量信号波形和相关参数的实时显示;按键模块的功能是提供整机的调节和控制接口。
2 FPGA逻辑功能模块设计
FPGA内部系统框图如图2所示。它主要由采样率控制器、触发控制单元、FIFO控制器、频率测量单元、按键控制单元和LCD驱动器构成。
3 SoPC设计
本设计中使用的是NiosⅡ/f处理器,使用硬件乘除法器,工作于50 MHz。使用FPGA内嵌的RAM块作为系统的运行内存。采用FLASH作为片外存储器,保存用户程序,其通过Avalon总线三态桥与NiosⅡ处理器相连。
3.1 SoPC软件设计
系统开机调用相关函数初始化LCD,SD卡和FAT文件系统之后,首先绘制图形界面,输出固定信息,接着读取波形参数,将其显示在LCD上,然后等待FIFO写满。若FIFO写满则将FIFO数据读入缓冲区中,同时在屏幕上绘制波形,获得波形的最大和最小值。最后如果有用户按键输入则处理按键事件,否则检测波形参数是否变化,若有变化则更新显示,否则等待FIFO写满,进行下一次显示。流程如图3所示。
3.1.1 SoPC底层软件设计
底层软件为各设备的驱动程序,主要有:
(1)LCD驱动。根据显示内容的需求,LCD驱动程序设计了以下函数:
①发送数据/命令:将数据/命令通过驱动器发送到LCD;
②LCD初始化:完成LCD的上电复位和初始化;
③LCD清屏:清空显示;
④输出一个像素:在指定位置输出一个指定颜色的像素点;
⑤画直线:画从(x0,y0)到(x1,y1)的指定颜色的直线;
⑥画矩形:画从(x0,y0)到(x1,y1)的指定颜色的矩形,可选择是否填充;
⑦输出一个字符:在指定位置输出一个指定颜色的字符;
⑧输出一个字符串:在指定位置输出一个指定颜色的字符串。
(2)SD卡驱动。SD卡通信采用SPI模式,SD卡驱动的函数及功能为:
①发送数据/命令:将数据/命令发送到SD卡;
②读取数据:从SD卡读取一个字节;
③SD卡复位:SD卡上电后复位并使其进入SPI模式;
④SD卡初始化:初始化SD卡使其作好数据读写准备;
⑤读一个扇区:从指定的扇区地址读取一个扇区的数据到缓冲区;
⑥写一个扇区:将缓冲区数据写入指定的扇区地址处。
(3)FAT16文件系统。FAT16文件系统的主要函数及功能为:
①FAT初始化:获取每簇的扇区数、FAT表地址、根目录地址和FAT表占用的扇区数等FAT信息;
②确定文件名称:查找已存在的波形文件以确定要保存的文件的名称;
③添加根目录项:将保存的文件的名称、大小、位置等添加到根目录;
④添加FAT表项:查找FAT表的空簇,将新文件的簇号写入FAT表。 3.1.2 SoPC顶层软件设计
SoPC的顶层软件主要完成波形及参数的显示、运行/停止控制、光标测量、波形窗口移动、保存数据到SD卡等功能。
(1)波形参数显示。绘制完图形界面后首先输出波形信息的固定部分,如Vpp:???mV,其中“???”将在读取相关参数后更新。然后读取相关参数并判断是否变化,若有变化则更新相关显示,在波形输出结束后将峰峰值更新到屏幕上。
(2)波形显示。波形参数显示完成之后,CPU进入等待状态,若FIFO写满信号为1,则开始读FIFO数据并显示波形。流程如图4所示。
(3)运行/停止控制。波形显示完后,若读到stop为1,则等到FIFO写满后进入停止状态。在停止状态FIFO中的数据保持不变。在停止状态若检测到用户输入,则执行相应函数。若检测到stop为0,则清屏,重绘图形界面,输出运行图标,返回到显示波形状态。
(4)光标测量。在停止状态若检测到光标测量为1,则进入光标测量状态。首先将2个光标的y轴坐标转换为实际电压值输出到LCD,然后计算2个光标电压的差值输出到LCD上的相应位置处。再根据分频系数将2个光标的x轴差值转换为实际的时间,输出到LCD。最后绘制2个十字光标,每个光标由一横一纵2条直线构成,其交点位于波形上。
光标绘制完成后检测用户按键,如果有左右移动或光标切换按键操作,则对相应光标的x坐标做加减运算,然后从缓冲区重新读取波形输出到LCD,将之前的信息覆盖,接着再次调用光标绘制函数绘制新的光标位置和光标的信息。流程如图5所示。
(5)将波形保存到SD卡。在停止状态若检测到保存按键输入,则将数据保存到SD卡。首先在FAT表中查找空簇,返回簇号,并在FAT表中标记该簇已被占用,同时更新FAT表。然后在根目录中查找已存在的DAT文件,若有DAT文件则返回最大的文件名,否则返回0。然后将缓冲区的数据写入SD卡的对应扇区,扇区地址=根目录地址+根目录大小+(簇号-2)×每簇的扇区数。接着在根目录中找到一个空闲项,将文件名称、大小、所在簇写入该项,即完成文件的保存。最后在LCD上输出相应的提示信息。流程如图6所示。
(6)波形显示窗口的移动。在停止状态若检测到左右移动输入,则进行波形显示窗口的移动。当左/右键按下时,若窗口没超过FIFO边界,则将窗口的首地址左/右移2个像素,然后更新显示的窗口,同时按比例更新窗口指示器的位置。
(7)波形文件格式。用于保存波形的文件使用8.3格式命名,名称为OSC_xxxx.DAT,其中xxxx为文件的编号。由于每次采集的波形数据量大小相同,因此文件的大小也为固定值。FIFO深度为256 B,添加触发电平、触发沿、时间刻度等信息后,文件的体积为260 B。由于磁盘的底层读写操作是按照扇区进行的,一个扇区512 B,所以将文件的大小定义为512 B。前256 B为波形数据,第257 B为触发沿信息,第258 B为触发电平信,第259 B,260 B为分频系数,通过软件转换后可得时间刻度的大小。
4 PC机软件设计
PC端软件使用C语言设计。图形部分使用SDL库。PC机软件用于打开示波器保存的波形文件,还原波形信息,并可以进行光标测量。程序首先初始化SDL视频,然后打开文件读取260个字节,关闭文件。载入背景图案,初始化TTF字体。将波形绘制到背景图案上并计算相关参数输出到相应位置,绘制两个光标,等待用户移动光标。光标移动后重新载入背景和波形并更新相关信息。软件流程如图7所示。
5 结语
本文介绍了一种基于SoPC的数字示波器设计,实际测试结果表明,系统完成了数字示波器的基本功能,各部分工作正常,各项指标达到设计要求。在设计过程中采用了FPGA芯片、嵌入式NiosⅡ处理器以及Verilog HDL语言,简化了电路的设计,提高了灵活性,缩短了设计周期。
应用Nios II嵌入式软核处理器所具有的可自定义指令的特点,本文提出了一种具有常规DSP功能的Nios II系统SOPC解决方案。用户可通过Matla...
本文设计了一种基于NiosⅡ的红外学习型遥控器,把载波频率测量、红外信号解调、脉宽测量、调制发送IP核集中到FPG
编辑推荐厂商产品技术软件/工具OS/语言教程专题
电机控制 | DSP | 氮化镓 | 功率放大器 | ChatGPT | 自动驾驶 | TI | 瑞萨电子 |
BLDC | PLC | 碳化硅 | 二极管 | OpenAI | 元宇宙 | 安森美 | ADI |
无刷电机 | FOC | IGBT | 逆变器 | 文心一言 | 5G | 英飞凌 | 罗姆 |
直流电机 | PID | MOSFET | 传感器 | 人工智能 | 物联网 | NXP | 赛灵思 |
步进电机 | SPWM | 充电桩 | IPM | 机器视觉 | 无人机 | 三菱电机 | ST |
伺服电机 | SVPWM | 光伏发电 | UPS | AR | 智能电网 | 国民技术 | Microchip |
开关电源 | 步进电机 | 无线充电 | LabVIEW | EMC | PLC | OLED | 单片机 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 蓝牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太网 | 仿真器 | RISC | RAM | 寄存器 | GPU |
语音识别 | 万用表 | CPLD | 耦合 | 电路仿真 | 电容滤波 | 保护电路 | 看门狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 阈值电压 | UART | 机器学习 | TensorFlow |
Arduino | BeagleBone | 树莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 华秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |