FPGA

FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它具有灵活性和可重配置性,可以根据特定应用的需求在现场进行编程和配置。与固定功能的ASIC(Application-Specific Integrated Circuit)相比,FPGA允许用户根据需要定制逻辑功能和连接,从而实现各种不同的数字电路设计。

现有的数控系统中多采用工控机加运动控制卡的计算机数控系统方案进行运动控制器的设计。随着工控机整体功能日趋复杂,对运动控制系统的体积、成本、功耗等方面的要求越来越苛刻。现有计算机数控系统在运动控制方面逐渐呈现出资源浪费严重、实时性差的劣势。此外,数控系统的开放性、模块化和可重构设计是目前数控技术领域研究的热点,目的是为了适应技术发展和便于用户开发自己的功能。

本文基于ARM和FPGA的硬件平台,采用策略和机制相分离的设计思想,设计了一种具有高开放性特征的嵌入式数控系统。该数控系统不仅具备了以往大型数控系统的主要功能,还具备了更好的操作性和切割性能,而且在开放性方面优势更为突出,使数控系统应用软件具有可移植性和互换性。

1 基于ARM和FPGA的嵌入式数控系统整体方案
  
基于ARM和FPGA的嵌入式数控系统结构如图1所示。按照模块划分的思想,本文将控制器分为人机交互、插补算法和通信三部分。系统中 ARM采用三星公司推出的16/32位RISC微处理器S3C2440A,它采用了ARM920T内核,核心频率高达400MHz。FPGA采用 Xilinx公司Spartan 3E系列的XC3S250E。
  

基于ARM和FPGA的嵌入式数控系统设计
图1 基于ARM+FPGA的嵌入式数控系统结构

  
2 S3C2440A控制系统
  
ARM作为数控系统的控制核心主要负责对从数据存储器中读取或直接从上位PC或网络获得的零件加工代码和控制信息进行译码、运算、逻辑处理,完成加工数据的粗插补以及人机界面和数据通信。ARM系统是整个数控系统的控制核心,在嵌入式操作系统的管理下,采用分时处理的方式实现整个系统的信息处理和粗插补运算,通过键盘、触摸屏等输入装置输入各种控制指令,对数控系统的实时运行状态通过LCD、指示灯等显示,实现人机友好交互。基于 S3C2440A控制器有各种通信接口,包括RS232、RS485、以太网口、USB等接口模块。通过这些接口实现文件传输和网络控制。
  
嵌入式数控的软件系统总体结构如图2所示。系统的软件结构主要分为两部分:操作系统软件和数控应用软件。由于数控系统是个实时多任务系统,实时性要求很高,为保证各个任务的协调执行,本系统采用了μC/OS-II实时操作系统作为软件平台。
  
基于ARM和FPGA的嵌入式数控系统设计
图2 嵌入式数控的软件系统总体构图

  
要实现该操作系统在S3C2440A微处理器平台上的正常运行,需要修改与处理器类型有关部分的代码,操作系统移植需要完成的工作是改写三个文件,即改写文件0S_CPU.H、0S_CPU_A.ASM和OS_CPU_C.C。其中0S_CPU.H包括了用#define语句定义的,与处理器相关的变数、宏和类型。0S_CPU_A.ASM中定义了几个汇编语言函数,包括中断服务程序的中断向量地址等。如果某些C编译器允许在C语言中直接插入汇编语言语句,就不一定需要,用户可以把所需的汇编语言代码直接放到OS_CPU_C.C文件中。
  
3 ARM和FPGA的接口设计
  
为使系统能够按照预期设计良好工作,首先要从硬件上实现ARM和FPGA之间的可靠通信。本文采用的方案是在FPGA上实现SRAM时序,将FPGA作为一块特殊的内存设备挂接到ARM的内存地址空间。这样在ARM端只需要编写SRAM的驱动程序就可以实现对FPGA端的数据写入和读取。
  
3.1 SRAM时序
  
SRAM时序分为读时序和写时序两种。当CPU对SRAM进行读操作时,首先会在地址线上写入正确的地址信号,接着是对SRAM芯片的片选信号,然后是对芯片的读信号,之后经过一定的振荡期后CPU在数据线上读到稳定的有效数据。
  
当CPU对SRAM进行写操作时,首先会在地址线上写入正确的地址线号,接着是对SRAM芯片的片选信号,然后是对芯片的写信号,在写信号上升沿之前CPU会在数据线上准备好有效数据,以供SRAM芯片在写信号上升沿将数据写入相应的地址单元。
  
3.2 FPGA端SRAM实现
  
ARM和FPGA的通信需要的接口信号有地址线A0-A15、数据线D0-D15、片选信号nCS,读信号nRD和写信号new,每次需要实现16位数据的读写。用Verilog硬件语言描述SRAM时序如下:
基于ARM和FPGA的嵌入式数控系统设计

  
可知只有在片选信号、读信号都拉低而写信号仍为高的情况下,才在data线上输出地址线上对应单元的数值,其他情况下FPGA都将data线置为高阻态,放弃对data线的控制。
  
4 基于FPGA的DDA精插补器设计
  
随着FPGA器件及其开发技术的日臻成熟,采用FPGA实现运动控制的方案显示出巨大的潜力。由于FPGA的设计是并行的、多线程,而且具有在线可编程能力,兼备了速度快和成本低的优点,同时克服了专用处理器灵活性方面的不足。基于FPGA的DDA精插补器相对传统的软件插补具有强大的优势。
  
4.1 数字积分插补算法
  
目前比较成熟的数控插补算法有逐点比较法、最小偏差法和数字积分法等,数字积分法又称数字微分分析器(Digital Differential Analyzer,DDA)。采用该方法进行插补,具有运算速度快、逻辑功能强、脉冲分配均匀等特点,可实现一次、二次甚至高次曲线插补,易于实现多轴联动。
  
数字积分插补算法是将函数的积分运算转换成变量的求和运算。如果所选择的脉冲当量足够小,则用求和运算代替积分所引起的误差可以不超过允许的数值。采用两个寄存器(函数寄存器和累加寄存器)和一个全加器构成数字积分器,将单位周期选得足够小,每单位周期都向累加器累加函数寄存器中的数值,如果累加器溢出,就向外发送脉冲,实时地改变函数寄存器的值,就可以完成步进电机的调速。DDA插补控制器设计的硬件描述语言程序的流程图如图3所示。

基于ARM和FPGA的嵌入式数控系统设计
图3 DDA插补控制器设计的硬件描述语言程序的流程图

  
4.2 数字积分插补的FPGA实现
  
采用有限状态机的设计方法,每个轴的数字积分插补均由一个三状态机的积分累加器完成。本系统的FPGA开发环境为Xilinx公司的 Xil inx ISE,并结合ModelSim仿真软件对整个系统进行了全面的功能验证。如图4所示为DDA插补模块的顶层RTL级原理图,由图5可知DDA插补模块的输入信号为各轴的起始坐标以及时钟信号和启动信号,输出信号为各轴的脉冲信号和方向信号。

基于ARM和FPGA的嵌入式数控系统设计基于ARM和FPGA的嵌入式数控系统设计
图5 DDA插补模块仿真波形

  
运用ModelSim仿真软件对DDA插补模块进行仿真验证。测试数据的起点坐标为(0,0,0)终点坐标为(8,15,11),仿真结果如图5所示,显示系统很好的完成了三轴的脉冲分配。
  
4.3 加减速控制模块
  
加减速控制是数控系统的关键技术之一,也是实现数控系统高实时性的瓶颈。数控系统中,为了保证机床在启动或停止时不产生冲击、失步、超程或振荡,必须对进给电机的脉冲频率或电压进行加减速控制。即当机床加速启动时,保证加在电机上的脉冲频率逐渐增加;而当机床减速停止时,保证加在电机上的脉冲频率逐渐减小。目前,电机加减速的常用控制方法是梯形加减速控制和S形加减速控制。本次设计采用两种控制方案以适应不同工作场合的要求。
  
4.3.1 梯形加减速
  
梯形加减速是指在加减速过程中加速度为常数,速度曲线为梯形的加减速过程。梯形加减速控制算法简单、易于实现,但在加减速过程中加速度曲线不连续会导致驱动机构的振动和冲击。正常情况下梯形加减速运动过程如图6所示分为加速段、匀速段和减速段三个阶段。
  
基于ARM和FPGA的嵌入式数控系统设计
图6 正常情况下梯形加减速运动过程

  
图7所示为ModelSim对梯形加减速模块的仿真结果,可以看到插补器输出的脉冲速度曲线呈现梯形,输出脉冲的频率的大小随速度的变化而变化,实现了电机的梯形调速。
  
基于ARM和FPGA的嵌入式数控系统设计
图7 ModelSim对梯形加减速模块的仿真结果

  
4.3.2 S形加减速
  
S形加减速是指在加减速时,加速度导数为常数,速度曲线为S形曲线的加减速过程。通过控制加速度导数来避免加速度突变,减小加工过程中由于加速度突变引起的机械系统振动。S形曲线速度控制可以得到平滑的速度曲线,但算法复杂,运算时间长。
  
基于ARM和FPGA的嵌入式数控系统设计
图8 S形加减速曲线图

  
S形加减速中加速度相对加速度导数的变化规律相当于直线加减速中速度相对加速度的变化规律。如图8所示为S形曲线加减速的曲线图,图中从上到下依次为速度曲线、加速度曲线以及减速度曲线。从图中可以看出,正常情况下S形加减速分为:加加速段、匀加速段、减加速段、匀速段、加减速段、匀减速段和减减速段七个阶段。加速度连续,调速光滑,不会导致驱动机构的振动和冲击。
  
基于ARM和FPGA的嵌入式数控系统设计
图9 ModelSim对S形加减速模块的仿真结果

  
图9所示为ModelSim对S形加减速模块的仿真结果,可以看到插补器输出的脉冲速度曲线呈现梯形,输出脉冲的频率的大小随速度的变化而变化,实现了电机的S形调速。
  
5 结束语

本文给出了一种基于ARM和FPGA的开放性的嵌入式数控系统,突破了传统的计算机数控系统架构,采用ARM处理器S3C2440A和 FPGA器件XC3S25 0E和μC/OS-II嵌入式实时操作系统组成的数控系统软硬件平台,充分利用了ARM微处理器的高速运算能力与FPGA的快速配置能力,大大减少了系统的外围接口器件,并具有良好的稳定性、模块化、可扩展性、可移植性等特点,有利于实现数控系统的开放化和网络化,有效地降低了系统成本,适合我国数控系统发展的需要,具有广阔的应用前景。

来源: 电子产品世界

围观 546

介绍了一种基于fpga的多轴控制器,控制器主要由arm7(LPC2214)和fpga(EP2C5T144C8)及其外围电路组成,用于同时控制多路电机的运动。利用Verilog HDL硬件描述语言在fpga中实现了电机控制逻辑,主要包括脉冲控制信号产生、加减速控制、编码器反馈信号的辨向和细分、绝对位移记录、限位信号保护逻辑等。论文中给出了fpga内部一些核心逻辑单元的实现,并利用QuartusⅡ、Modelsim SE软件对关键逻辑及时序进行了仿真。实际使用表明该控制器可以很好控制多轴电机的运动,并且能够实现高精度地位置控制。

随着电机广泛地应用于数字控制系统中,对电机控制的实时性和精度上的要求越来越高。如何灵活、有效地控制电机的运行成为研究的主要方向。文中采用现场可编程逻辑门阵列(Field Programmable Gate Array,fpga),通过Verilog语言编程来实现电机的控制。利用fpga设计具有硬件设计软件化、高度集成化、高工作频率等优点。fpga最大的特点就是灵活,实现你想实现的任何数字电路,可以定制各种电路,减少受制于专用芯片的束缚,真正为自己的产品量身定做。在设计的过程中可以灵活的更改设计,而且它强大的逻辑资源和寄存器资源可以让你轻松的去发挥设计理念。其并行执行,硬件实现的方式可以应对设计中大量的高速电子线路设计需求。

1 多轴控制器主要功能

多轴控制器与上位机、电机驱动器等配合使用,图1为采用多轴控制器组成的控制系统总体示意图。控制器接收上位机发送的控制指令,分析处理并产生相应的方向信号、脉冲信号给驱动器,从而达到控制电机运行的目的。为了提高系统的控制精度,将电机的编码器信号作为反馈信号输入给控制器(内部实现自动辨向及四细分)。在各轴运动过程中,专用控制器对电机运行的绝对位移进行记录,并且可以实时地将各轴的绝对位置信息上传给上位机。另外在电机运行的过程中,为了保证电机运行的安全性,控制器还采用了限位信号反馈实现全硬件保护措施。

基于ARM和FPGA的多路电机控制方案

2 多轴控制器组成

专用控制器由arm(LPC2214)、fpga(EP2C5T144C8)、驱动器接口电路、编码器接口电路、限位检测电路和电源电路等组成,如图2为一个八轴电机控制器的硬件组成图。arm通过串口实现与上位机之间的通信,解析从上位机获得的控制指令,并通过fpga产生相应输出信号给驱动器接口,驱动器接口外接驱动器。编码器信号作为位置反馈信号同编码器接口相连,形成位置环反馈。限位信号作为安全检测信号同限位检测接口相连,为整个系统添加一道安全保障。

基于ARM和FPGA的多路电机控制方案

3 fpga控制逻辑

专用控制器在完成整个控制的过程中,arm只负责指令解析、控制指令发送、实时数据上传等任务,fpga才是多轴专用控制器的核心。通过Verilog HDL语言在fpga内部实现了加减速曲线、编码器信号辩向及四细分、绝对位移记录等功能。图3为电机控制的整体输入、输出信号图,通过片选信号CS、读有效信号rd_enable、写有效图信号wr_enable进行电机通道选择。图4给出了1#通道控制的fpga内部逻辑示意图,下面将逐一对各主要模块进行详细介绍。

基于ARM和FPGA的多路电机控制方案

基于ARM和FPGA的多路电机控制方案

1)加减速曲线模块

为了更有效、更理想地控制电机的运行,在fpga内部设计了加减速曲线模块。文中采用了一种近似指数加减速曲线的方法,如图5为近似指数加速曲线,减速曲线与之对称。速度等距分布,那么在该速度级上保持的时间不一样场。为了简化,用速度级数N与一个常数C的乘积去模拟并且保持的时间用不熟来代替。因此,速度每升一级,电机都要在该速度级上走NC步(其中N为该速度级数)。

基于ARM和FPGA的多路电机控制方案

建立两个名为rom_pos、rom_div的ROM模块,如图6所示,rom_pos为脉冲个数存储器,rom_div为分频值存储器。通过相同的地址线将两个存储器连接起来,使一个地址对应一组脉冲个数和分频值。

fpga获得方向信号、脉冲(距离)信号、目标分频值之后.如果电机运行过程中不需要加减速,直接以目标分频值控制脉冲信号的发送即可。如果需要执行加减速,则fpga内部要调用加减速模块。根据地址线获取一组数据,即脉冲个数pul_cnt和分频值div_num,以div_num大小的分频值发送pul_cnt个脉冲,然后再按照下一组数据值发送脉冲,直到分频值达到目标分频值为止,减速过程与加速过程对称。当电机按照脉冲(距离)信号运行到一半行程的时候,如果分频值还未达到目标分频值,此时就要进行强制减速。

编写仿真程序,使两个存储器地址线相同,对存储器地址address做加1运算,从而可一次性读取两个存储器所对应存储单元的数据。利用Modulesim仿真工具对加减速模块进行功能仿真,仿真结果如图7所示,访问一个存储器地址就对应着一组脉冲个数和分频值的输出。

基于ARM和FPGA的多路电机控制方案

2)编码器反馈辨向及四细分

编码器反馈信号由A、B、Z三相信号组成。A、B两相信号相位相差90度,一个周期内A、B相信号会出现4种不同的组合状态,根据这一特征可以对编码器信号进行辩相和四细分处理。Z相信号为编码器零位信号,当编码器旋转一圈,Z相就会有信号输出。
在QuartusⅡ编译环境下成功编译之后,调用Modulesim仿真软件,编写仿真程序,使之产生全局时钟、复位信号、相位差为90度的A、B相信号和Z相信号。如图8所示,给出了该多轴控制器中所采用的编码器信号辩相及四细分的功能仿真图。

3)绝对位移记录

多轴专用控制器可以将电机运行的绝对位移实时地上传给上位机,这一功能的实现就有赖于fpga中的绝对位移记录部分的逻辑功能。在fpga内部设置一个绝对位移寄存器,用来对编码器反馈信号(辨向四细分之后)进行计数运算。当编码器信号的一个脉冲到来时,根据辩向后的方向信号做不同的运算处理。方向为正则绝对位移寄存器的值就进行加1运算,否则进行减1运算,从而达到对绝对位移进行记录的目的。并且arm可以随时读取该绝对位移寄存器的值,然后将其值上传给上位机,从而完成实时上传电机运行位置信息的功能。编写仿真程序对绝对位移寄存器进行功能仿真,结果如图9所示。

4 结束语

该方案成功已应用于某6轴Stewart平台运动控制中,在实现了0.1μm的运动定位精度的同时,运动机构得到了很好的保护,多次实验及实际使用中,该专用控制器运行安全可靠。

转自: 21ic.com

围观 477

作者:赵厉,张志国,唐芳福

1. 概述

随着集成电路技术的快速发展,半导体存储、微处理器等相关技术的发展得到了飞速发展。FPGA以其可靠性强、运行快、并行性等特点在电子设计中具有广泛的意义。作为一种可编程逻辑器件,FPGA在短短二十年中从电子设计的外围器件逐渐演变为数字系统的核心。伴随着半导体工艺技术的进步,FPGA器件的设计技术取得了飞跃发展及突破。

分频器通常用来对某个给定的时钟频率进行分频,以得到所需的时钟频率。在设计数字电路中会经常用到多种不同频率的时钟脉冲,一般采用由一个固定的晶振时钟频率来产生所需要的不同频率的时钟脉冲的方法进行时钟分频。

在FPGA的设计中分频器是使用频率较高的基本设计,在很多的设计中也会经常用到芯片集成的锁相环资源,如用Xilinx的DLL以及Altera的PLL来进行时钟的分频、倍频与相移。在一些对时钟精度不高的场合,会经常利用硬件描述语言来对时钟源进行时钟分频。

分频器是一种基本电路,一般包括数字分频器、模拟分频器和射频分频器。根据不同设计的需要,有时还会要求等占空比。数字分频器采用的是计数器的原理,权值为分频系数。模拟分频器就是一个频率分配器,用带阻带通实现(比如音箱上高中低喇叭的分配器)。射频分频器也是滤波器原理,用带内外衰减,阻抗匹配实现。

随着FPGA技术的发展,基于FPGA技术的硬件设计数字分频器已成为数字系统设计的研究重点。数字分频器通常分为整数分频器和小数分频器。在有些需求下还要分数分频器。

本设计是基于FPGA的数字分频器,通过VHDL硬件设计语言,在Modelsim6.5上对设计的分频器进行仿真验证。

2. 数字分频器的设计

数字分频器的设计与模拟分频器的设计不同,数字分频器可以使用触发器设计电路对时钟脉冲进行时钟分频。分频器的一个重要指标就是占空比,即在一个周期中高电平脉冲在整个周期中所占的比例。占空比一般会有1:1,1: N等不同比例的要求,由于占空比的比例要求不一样,所以采用的时钟分频原理也各不同。在FPGA的数字分频器设计中,主要分为整数分频器、小数分频器和分数分频器。现在分别介绍整数分频器的设计、小数分频器的设计和分数分频器的设计。

2.1 整数分频器的设计

整数分频器是指基准时钟与所需的时钟频率成整数倍关系。整数分频器的分频种类一般包括奇数分频和偶数分频。虽然时钟分频原理会根据时钟分频的要求不同而不同,但均可采用标准计数器原理来实现。

偶数分频器的设计原理较为简单,主要是利用计数器来实现。假设要进行n(n为偶数)分频,设定一个在分频时钟上升沿触发的计数器循环计数来实现。当计数器值为0-((n/2)-1)时,输出时钟信号进行翻转,同时给计数器一个复位信号,使下一个时钟上升沿到来时,计数器重新开始计数,由此不断循环。

奇数分频器的设计原理与偶数分频的设计方法很相似,都是通过计数器来实现的。如果要进行n(n为奇数)分频,直接设计n进制的计数器即可。还有一种方法就是选择两个计数器cnt1和cnt2,分别在时钟上升沿和下降沿触发计数。cnt1和cnt2均当计数器值为0-((n/2)-1)时,输出时钟信号进行翻转,同时给计数器一个时钟复位信号,使下一个时钟上升沿到来时,计数器重新开始计数,如此进行循环下去。由此可知,计数器cnt1和cnt2的实现方法一样,只是翻转边沿不一样,最终输出的时钟为clkout = clk1 + clk2。

2.2 小数分频器的设计

小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需的小数分频值,分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率,而不是一次N分频,一次N-1分频。

小数分频器有很多种设计方案,但其基本原理是一样的,都是在若干个分频周期中采取某种方法使几个周期多计一个数或少计一个数,从而在整个计数周期的总体平均意义上获得一个小数分频比。还有一种分频方法就是,利用状态机和计数器。假设时钟信号的频率为1khz,需要产生750khz的分频信号,其分频系数为6/8。基本设计思想是,在8个时钟信号中保留6个时钟信号。这种方法是需要预先设定状态机的个数,主要用于已经知道需要使用哪一个小数分频系数的情况下。如果分频系数发生变化,则需要在程序内部进行修改。

双模前置小数分频的设计方法是,假设要进行m,n时钟分频(其中m、n都是整数,且n<10),因为只有一位小数,所以总共要进行10次分频。总的规律是:进行n次m+1分频,10-n次m分频。例如,设计一个分频系数为3.6的分频器,将小数部分的6按倍累加,假设累加的值为a,如果a<10,则进行3分频,如果a<10下一次则加上6。此后,如果a>=10,则进行4分频,4分频过后再将累加值减去4后与10比较以决定下一次分频是4分频还是3分频,这样分频器设计成6次4分频,4次3分频,总的分频值为(6×4+4×3)/(6+4) = 3.6。

2.3 分数分频器的设计

分数分频器的数据输入部分与小数分频基本相同,差别仅在于数码管显示部分显示三位分频系数。由于分数在一定情况下可以转化为小数进行计算,所以分数分频的设计思想与小数分频的很相似。假设进行分频,总分频数由分母m决定,规律是进行n次j+1分频和m-n次j分频。两种分频交替进行的计算方法和小数分频的很类似。累加分结果是大于等于分母还是小于分母决定是进行j分频还是j+1分频。

3. 数字分频器的FPGA设计及仿真

利用FPGA对8192kHz的基准时钟进行时钟分频,分别得到1024kHz、512kHz、256kHz和1kHz的时钟频率,需要分别进行8分频、16分频、32分频和8192分频。在利用FPGA进行设计整数分频器时,通过VHDL硬件描述语言利用计数器方式来实现。

3.1 1024kHz时钟分频

根据所需的时钟频率为1024kHz的时钟,而晶振时钟的频率为8192kHz,晶振时钟与所需的时钟频率恰巧是8倍的整数倍关系,因此需要对8192kHz的晶振时钟进行8分频来获得所需要的时钟。根据整数倍分频器的设计方法原理,通过ISE9.1逻辑设计工具,利用VHDL硬件描述语言来进行8分频的分频器设计。然而8又是偶数,所以需要设计的是偶数分频器。对设计的内容通过Modelsim6.5仿真软件进行仿真验证,结果如图3-1所示。


图3-1 1024kHz时钟分频

由图3-1得知,当8192kHz的晶振时钟输入8个时钟,系统输出1个时钟,即一个1024kHz频率的时钟。程序设计中采用计数器来实现,当计数器值为0-((n/2)-1)=-3时,输出时钟信号进行翻转,同时给计数器一个复位信号,使下一个时钟上升沿到来时,计数器重新开始计数,不断循环下去。

3.2 512kHz时钟分频

根据所需的时钟频率为512kHz的时钟,而晶振时钟的频率为8192kHz,晶振时钟与所需的时钟频率恰巧是16倍的整数倍关系,因此需要对8192kHz的晶振时钟进行16分频来获得所需要的时钟。根据整数倍分频器的设计方法原理,通过ISE9.1逻辑设计工具,利用VHDL硬件描述语言来进行16分频的分频器设计。然而16又是偶数,所以需要设计的是偶数分频器。对设计的内容通过Modelsim6.5仿真软件进行仿真验证,结果如图3-2所示。

图3-2 512kHz时钟分频

由图3-2得知,当8192kHz的晶振时钟输入16个时钟,系统输出1个时钟,即一个512kHz频率的时钟。程序设计中采用计数器来实现,当计数器值为0-((n/2)-1)=-7时,输出时钟信号进行翻转,同时给计数器一个复位信号,使下一个时钟上升沿到来时,计数器重新开始计数,不断循环下去。

3.3 256kHz时钟分频

根据所需的时钟频率为256kHz的时钟,而晶振时钟的频率为8192kHz,晶振时钟与所需的时钟频率恰巧是32倍的整数倍关系,因此需要对8192kHz的晶振时钟进行32分频来获得所需要的时钟。根据整数倍分频器的设计方法原理,通过ISE9.1逻辑设计工具,利用VHDL硬件描述语言来进行32分频的分频器设计。然而32又是偶数,所以需要设计的是偶数分频器。对设计的内容通过Modelsim6.5仿真软件进行仿真验证,结果如图3-3所示。


图3-3 256kHz时钟分频

由图3-3得知,当8192kHz的晶振时钟输入32个时钟,系统输出1个时钟,即一个256kHz频率的时钟。程序设计中采用计数器来实现,当计数器值为0-((n/2)-1)=-15时,输出时钟信号进行翻转,同时给计数器一个复位信号,使下一个时钟上升沿到来时,计数器重新开始计数,不断循环下去。

3.4 1kHz时钟分频

根据所需的时钟频率为1kHz的时钟,而晶振时钟的频率为8192kHz,晶振时钟与所需的时钟频率恰巧是8192倍的整数倍关系,因此需要对8192kHz的晶振时钟进行8192分频来获得所需要的时钟。根据整数倍分频器的设计方法原理,通过ISE9.1逻辑设计工具,利用VHDL硬件描述语言来进行8192分频的分频器设计。然而8192又是偶数,所以需要设计的是偶数分频器。对设计的内容通过Modelsim6.5仿真软件进行仿真验证,结果如图3-4所示。


图3-4 1kHz时钟分频

由图3-4得知,当8192kHz的晶振时钟输入8个时钟,系统输出1个时钟,即一个1kHz频率的时钟。程序设计中采用计数器来实现,当计数器值为0-((n/2)-1)=-4095时,输出时钟信号进行翻转,同时给计数器一个复位信号,使下一个时钟上升沿到来时,计数器重新开始计数,不断循环下去。

4. 结束语

本文给出了基于FPGA的数字分频器设计方法。采用计数器设计方法实现了对8192kHz的基准时钟进行分频,分别得到1024kHz、512kHz、256kHz和1kHz的时钟频率。其他的偶数倍分频也可采用类似的方法分频的到需要的频率时钟。通过在Modelsim6.5仿真工具验证了设计的正确性。

参考文献

[1] 夏宇闻.Verilog数字系统设计教程[M].北京航空航天大学出版社,2008
[2] (美)Parag K.Lala著,乔庐峰等译.现代数字设计与VHDL [M].电子工业出版社,2010
[3] 潘松,黄继业,潘明.EDA技术实用教程[M].科学出版社,2010
[4] 张奇惠,武超,王二萍,蒋俊华,张伟风.基于VerilogHDL的分频器的优化设计[J].河南大学学报(自然科学出版).2007,37(4):343
[5] 王世元,谢开明,石亚伟,陈孟钢,龙正吉.一种新的可控分频器的FPGA实现[J].西南大学学报(自然科学版)2007,29(1):89-93
[6] 刘亚海,林争辉.基于FPGA的小数分频器的实现[J].现代电子技术,2008,28(3):113-117
[7] 蔡晓燕,FPGA数字逻辑设计[M].清华大学出版社,2013
[8] 徐志军,徐光辉.CPLD/FPGA的开发与应用[M].电子工业出版社,2002
[9] 王诚,薛小刚,钟信潮.FPGA/CPLD设计工具[M].人民邮电出版社,2003
[10] 李秋生.一种改进的小数分频器设计方法[J].现代电子技术.2009,08:43-46
[11] 徐德成.任意数分频设计方法[J].科技广场.2007,(11):219-220
[12] 古良玲,杨永明,郭巧惠.基于FPGA的半整数及整数分频器的参数化设计[J].电子器件,2005,28(2): 404-406

来源: 电子技术应用

围观 340

现场可编程门阵列即FPGA,是从EPLD、PAL、GAL等这些可编程器件的基础上进一步发展起来的。作为专业集成电路领域中的半定制电路而出现的FPGA,不但解决了定制电路的不足,而且克服了原有可编程器件因门电路数有限的而产生的缺点。FPGA 的使用十分的灵活,同一片FPGA 只要使用不同的程序就能够达到不同的电路功能。现在FPGA 在通信、仪器、网络、数据处理、工业控制、军事和航空航天等众多领域有着广泛的应用。随着成本和功耗的进一步降低,将在更多的领域运用FPGA。基于FPGA 的电机测速系统设计,以Quartus II 为设计平台,采用硬件描述语言VHDL和模块化设计的方式,并通过数码管驱动电路动态显示测量的结果。本设计具有外围电路少,集成度高,可靠性强等特点,可以用来测量电机的转速值。

外围电路设计

传感器将电机转速的模拟信号转换成数字脉冲信号送入FPGA 模块。同时由基准时钟电路产生准确的时钟信号和复位电路产生的复位信号送入FPGA 模块。再由FPGA 模块产生分频电路、十进制计数器电路、数据处理电路和显示译码电路。由分频电路将送入的基准时钟信号进行分频,得到一个闸门信号,作为十进制计数器的使能信号。数据处理电路的作用是将十进制计数器得到的数据进行相应的处理后,再送入显示译码电路进行转换译码。电机测速系统的总体框图如图1所示。外围电路分为:基准时基电路,复位电路,传感器测量电路和显示电路。

揭秘FPGA电机测速系统经典电路
图2 有源晶振电路图

基准时基电路设计

基准时基电路采用50 MHz 的有源晶振,3.3 V 电源通过FB5接入有源晶振的VCC 端口,同时通过C10和C11滤去高频干扰信号。从OUT 端口输出50 MHz 的时钟信号。晶振电路如图2所示。

复位按键的设计

按键作为嵌入式智能控制系统中人机交互的常用接口,我们通常会通过按键向系统输入各种信息,调整各种参数或者发出控制指令,按键的处理是一个很重要的功能模块,它关系到整个系统的交互性能,同时也影响系统的稳定性。在本次设计中,通过按键实现了FPGA模块的手动复位。复位按键如图3所示。

揭秘FPGA电机测速系统经典电路
图3 复位按键电路图

显示电路的设计

在本次设计中我们用到的显示电路如图4 所示。

揭秘FPGA电机测速系统经典电路

由数码管显示电路可以知道,这是共阳极数码管。当在位选端SE1~SE4输入低电平时,三极管导通,从而D1~D4接入高电平。由a 到DP 端输入数码管显示码,就可以得到我们所需要的数字,由位选端让数码管选择导通。

本次设计是基于FPGA 的电机测速系统设计,利用的是Altera 公司开发的Quartus II 软件作为设计平台,可以在FPGA 开发板上实现测量由传感器转换得到的脉冲信号,并且通过计算得到电机转速值。在本次设计中,还可以进行一些扩展,可以添加报警电路,设定一个报警值,当测量的转速值大于这个报警值时,就可以让蜂鸣器报警或数码管点亮。

来源: 中电网

围观 492

在电子工程,资源勘探,仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具。频率测量也是电子测量技术中最基本最常见的测量之一。不少物理量的测量,如转速、振动频率等的测量都涉及到或可以转化为频率的测量。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应实际工作的需要,本文在简述频率测量的基本原理和方法的基础上,提供一种基于FPGA的数字频率计的设计和实现过程,本方案不但切实可行,而且具有成本低廉、小巧轻便、便于携带等特点。

1.数字频率测量原理和方法及本系统硬件框架

数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波和尖脉冲信号的频率。而且还可以测量它们的周期。数字频率计在测量其他物理量如转速、振动频率等方面也获得广泛应用。

1.1 数字频率的测频原理和方法

众所周知,所谓“频率”就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可衰示为f=N/T 。

数字频率计测频率的原理框图可示如图1(a)。其中脉冲形成电路的作用是:将被测信号变成脉冲信号,其重复频率等于被测频率fx。时间基准信号发生器提供标准的时间脉冲信号、若其周期为1s。则门控电路的输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通.被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数,各点的波形如图1(b)所示。由于计数器计得的脉冲数N是在1秒时间内的累计数 所以被测频率fx=NHz。

基于FPGA自适应数字频率计的设计

目前,有三种常用的数字频率测量方法:直接测量法(以下称M法)、周期测量法(以下称T法)和综合测量法(以下称M/T法)。M法是在给定的闸门时间内测量被测信号的脉冲个数,进行换算得出被测信号的频率。T法是通过测量被测信号一个周期时间计时信号的脉冲个数,然后换算出被测信号的频率。这两种测量法的精度都与被测信号有关,因而它们属于非等精度测量法。而M/T法设实际闸门时间为t,被测信号周期数为Nx,则它通过测量被测信号数个周期的时间,然后换算得出被测信号的频率,克服了测量精度对被测信号的依赖性。M/T法的核心思想是通过闸门信号与被测信号同步,将闸门时间t控制为被测信号周期长度的整数倍。测量时,先打开预置闸门,当检测到被测闸门关闭时,标准信号并不立即停止计数,而是等检测到的被测信号脉冲到达是才停止,完成被测信号的整数个周期的测量。测量的实际闸门时间与预置闸门时间可能不完全相同,但最大差值不超过被测信号的一个周期。

1.2 系统的硬件框架设计

本系统由脉冲输入电路、整形电路、核心控制电路(由FPGA构成)和输出显示电路组成,如图2所示。

基于FPGA自适应数字频率计的设计

控制的核心芯片是FPGA,它由两大功能模块组成:(1)频率计数模块,包含两个部分,选通时间控制部分,可改变选通时间;计数部分,根据选通时间的长短对被测信号正脉冲进行计数;(2)扫描显示模块,对计数的结果进行扫描显示,从而完成整个测频率的过程。外围的电路相对简单,只有信号输入整形电路和数码管显示电路。

系统的工作原理是,被测信号经整形生成矩形波输入到控制核心芯片FPGA的计数模块,计数模块根据所提供的矩形波上升沿计数,计数时间则由选通时间控制部分决定,根据频率所处的范围来决定档位;将计数的结果给显示电路,通过扫描,在数码管上显示频率的大小。

整形电路是将待测信号整形变成计数器所要求的脉冲信号。电路形式采用由555定时器所构成的施密特触发器。若待测信号为正弦波,输入整形电路,设置分析为瞬态分析,启动电路,其输入、输出波形如图1(b)所示。由图可见输出为方波,二者频率相同,频率计测得方波的频率即为正弦波的频率。

2.基于FPGA的系统设计

2.1 EDA技术和VHDL语言的特点

EDA(电子设计自动化)代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”(Top Down)的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终目标器件。FPGA可以通过软件编程对目标器件的结构和工作方式进行重构,能随时对设计进行调整,具有集成度高、结构灵活、开发周期短、快速可靠性高等特点,数字设计在其中快速发展,应用这种技术可使设计过程大大简化。VHDL语言最大的特点是描述能力极强,可以覆盖逻辑设计的诸多领域和层次,并支持众多的硬件模型。其特点包括:

(1)设计技术齐全,方法灵活,支持广泛;

(2)系统硬件描述能力强;

(3)VHDL语言可以与工艺无关地进行编程;

(4)VHDL语言标准、规范,易于共享和重用。

2.2 系统设计

设计采用实验教学中常用的altera公司的FLEX10K10系列芯片,该芯片的反应时间可达ns级,频率计的测频范围可为1Hz~999MHz。系统在兼顾测量精度和测量反应时间的基础上,实现了量程的自动转换,测量可以全自动地进行。其控制和逻辑电路是基于quartus II和VHDL语言进行设计,外部电路相当简单。图3是本设计的顶层示意图。设计主要由分频模块、控制模块、锁存模块等共七个模块组成。脉冲信号由fsin引脚输入到cntrl模块,由clr引脚和fdiv输出信号q共同决定fsin的有效性,并由cntd实现自适应控制,当fsin的频率高出或低于某个量程,cntrl模块会根据具体的值选择相应合适的量程(本设计共有分为1~9999Hz、10~99.99kHz、100~999.9kHz、1M~999M等四个量程)。再经由lock锁存之后,由dspnum选择具体的通路,由dspsel和disp实现动态扫描显示,扫描显示模块有dspsel控制七段数码管的片选信号,间锁存保存的BCD码数据动态扫描译码,以十进制形式显示。以上的各功能模块都是在FLEX10K10中,用VHDL予以实现的,较之以往的传统型电路更为简单,更易于实现频率计的小型化、微型化甚至芯片化设计。

基于FPGA自适应数字频率计的设计

顶层示意图中的各模块用VHDL语言生成后,再生成图3所示的示意图,经编译链接之后就可以下载到系统中。再在外部扩展信号采集和相应的数码显示电路,就可以完成一个相对简单的数字频率计。图4是系统的整体框图。

基于FPGA自适应数字频率计的设计

信号从被测信号输入处输入到波形整形电路后,经过FPGA算法处理,再由数字显示部分输出。在数字显示部分根据不同的档位,可以把相应的单位加入即可,人一档时单位为Hz,二档时为kHz,其余类推。

此外,在硬件电路设计时,应注意FPGA的接口部分,包括电平转换、标准CPU接口等等。比如FPGA器件的I/O电压不能达到TTL电平,则需要添加必要的电平转换芯片,即通常指的Transceiver。又如,驱动LED等功能的需要是经常遇到的,但FPGA器件的驱动能力不一定能够满足需要,因此提供驱动能力也是设计时需要考虑的问题之一。同时,时钟设计是FPGA设计的核心问题之一,时钟系统的不稳定和不合理,往往不能发挥器件的全部功能和潜力,严重时还会导致系统失败。对于多时钟、多速率系统,如何做到全局同步设计、保证时延特性、达到设计速率等,对系统成功都是极为关键的。

3.结束语

本文在介绍了频率计的基本原理的基础上,阐述了如何基于FPGA设计和实现自适应频率计的设计,并且给出了完整的设计过程,以及针对设计中应该注意的问题加以说明。其外,如果使用更高频率的FPGA芯片,频率计的量程上限可以进一步的提高。

来源:互联网

围观 491

1引言

与传统模拟示波器相比.数字存储示波器不仅具有可存储波形、体积小、功耗低,使用方便等优点,而且还具有强大的信号实时处理分析功能。在电子测量领域,数字存储示波器正在逐渐取代模拟示波器。但目前我国使用高性能数字存储示波器主要依靠国外产品,而且价格昂贵。因此研究数字存储示波器具有重要价值。借于此,提出了一种简易数字存储示波器的设计方案,经测试,性能优良。

2 数字存储示波器基本工作原理

数字存储示波器与模拟示波器不同在于信号进入示波器后立刻通过高速A/D转换器将模拟信号前端快速采样,存储其数字化信号。并利用数字信号处理技术对所存储的数据进行实时快速处理,得到信号的波形及其参数,并由示波器显示,从而实现模拟示波器功能,而且测量精度高。还可存储信号,因而,数字存储示波器可以存储和调用显示特定时刻信号。

3 系统分析论证

3.1 A/D实时采样

根据奈奎斯特采样定理,采样速率必须高于2倍的信号最高频率分量。对于正弦信号,一周期内应有2个采样点。为了不失真恢复被测信号,通常一周期内需要采样8个点以上。为了配合高速模数转换器,采用FPGA控制M/D转换器的采样速率,以实现高速实时采样。实时采样可以实现整个频段的全速采样,本系统设计选用ADI公司的12位高速A/D转换器AD9220,其最高采样速率可达10 MHz。

3.2 双踪显示

本系统设计的双踪显示模块是以高速切换模拟开关选通两路信号进入采样电路,两路波形存储在同一个存储器的奇、偶地址位。双踪显示时,先扫描奇地址数据位,再扫描偶地址数据位。采用模拟开关代替一个模数转换器,避免两片高速A/D转换器相互干扰,降低系统调试难度,并且实现系统功能。

3.3 触发方式

采用FPGA内部软件触发方式,通过软件设置触发电平,所设置的施密特触发器参数易于修改,从而抑制比较器产生的毛刺。当采样值大于触发电平,则产生一次触发。该方式充分利用了FPGA的资源,减少外围电路,消除硬件毛刺产生的干扰,易于调整触发电压。

3.4 波形显示位置的调节

3.4.1 行扫描调节

通过控制FPGA内部双口RAM(1 KB)的起始地址的偏移量确定来控制波形的移动。其具体方法是将滑动变阻器R上的电平通过模数转换器转换为数字信号传输给FPGA,再与初始电平数字信号(显示位置复位时,滑动变阻器R的电平采样值)相比较决定起始地址ADR0的偏移量。该方法可易于实现波形满屏和自动显示功能。

3.4.2 列扫描调节

MAXl97采样A、B通道的Position电位器值,所得采样值经FPGA送至16位串行D/A转换器,MAX542产生直流电平,该直流电平与列扫描波形相加送至模拟示波器显示,实现波形上下移动。为分离A、B通道,在读A通道波形数据时,FPGA必须将Position A电位器的值送至D/A转换器;而在读B通道波形数据时,也必须将Position B电位器的值送至D/A转换器,这样可在调节某一电位器时,实现相应通道波形上下移动。

3.5 波形数据存储

数字示波器存储波形数据可采用外接的双口RAM或通用静态RAM,同时FPGA可控制RAM的地址线,从而实现波形数据的存储。双口RAM可同时进行读写操作,由于本系统设计采用FPGA,因此可充分利用FPGA的逻辑阵列和嵌入式阵列,可将双口RAM写入FPGA内部,从而无需外接RAM,减少硬件电路,提高简易数字示波器的可靠性。

4 系统设计方案

本系统设计框图如图1所示。整个系统是以FPGA为核心,包括前端模拟信号处理模块、单片机模块、显示模块和键盘输入模块。而信号的前级处理模块又包括射级跟随器、程控放大电路、整形电路。A、B通道的信号经前级处理变为O~4 V,AD9220对其采样。波形存储控制模块将其采样数据写入FPGA内部RAM,再由波形显示控制模块进行显示。FPGA通过编程设置实现测频、键盘扫描、显示驱动、波形存储控制等功能。单片机AT89S52控制整个系统键盘和点阵液晶模块实现人机交互。通过面板按键可方便调整波形显示方式。

基于单片机和FPGA的简易数字存储示波器设计

5 硬件电路设计

5.1 程控放大电路

采用模拟开关CD4051、宽带运算放大器AD844及精密电位器实现10 mV/div~2 V/div的多档垂直分辨率。FPGA含有通道选择寄存器模块,通过单片机写入通道号控制模拟开关以选通不同的反馈电阻,实现不同放大倍数,将信号调理在满足AD9220的0~4 V的范围内,具体电路如图2所示。

基于单片机和FPGA的简易数字存储示波器设计

5.2 数据采集模块

本系统设计采用ADI公司的高速模数转换器AD9220实现波形信号的采集,AD9220最高采样速率可达10 MHz,采用外部晶体振荡器8 MHz,FPGA内部通过采样实现波形存储。AD9220有直流耦合和交流耦合两种输入方式。本系统设计采用直流耦合,0~5 V的输入方式。采用内部2.5 V参考电压。由于系统垂直分辨率只需255级,故采用AD9220的高8位。数据采集电路如图3所示。

基于单片机和FPGA的简易数字存储示波器设计

5.3 FPGA设计

系统采用Verilog HDL语言,在QuartusII软件下对FPGA进行逻辑电路的描述编程,可灵活实现系统所需电路和控制模块。

5.3.1 触发模块

单片机先向FPGA模块写入设置的触发电压,FPGA内部相比较后,当采样值大于该触发电压时,则产生一次触发。图4为触发模块。

基于单片机和FPGA的简易数字存储示波器设计

5.3.2 程控放大控制模块

单片机首先以100 mv/div的档位对信号采样,通过比较与该信号最近的模拟开关的通道号,然后写入控制字,产生相应通道号,实现垂直分辨率的调整。

5.3.3 波形存储控制模块

该模块为RAM模块的写地址累加器,可控制波形的存储。H_sering为单次和多次触发控制引脚,当为高电平时,单次触发,停止向RAM写入数据,所显示波形为存储波形;为低电平时,多次触发,当检测到一次触发时,即向RAM写一次数据,共l K个点,并在写操作时屏蔽触发。写地址先写奇地址,存入通道一采样后的波形数据,后写偶地址,存入通道二采样后的波形数据。如果连续多次检测不到触发时,向RAM中写入全0,显示一条直线,即实现自动捕捉功能。波形存储控制模块如图5所示。

基于单片机和FPGA的简易数字存储示波器设计

5.3.4 波形显示控制模块

该模块为读地址累加器,从RAM中读取数据,并产生行扫描和列扫描数据。通过单片机写入累加器基地址,改变读取数据的起始位,实现波形的平移。该模块还可计算波形的峰峰值、平均值,单片机可直接读回数值。波形显示控制模块如图6所示。

6 系统软件设计

系统软件设计实现人机交互、信息提示、系统启动与复位等功能。首先系统初始化,显示默认通道波形,再等待按键按下。当按键按下后,完成相应功能,显示相应波形,然后循环等待。系统软件设计流程如图7所示。

基于单片机和FPGA的简易数字存储示波器设计

7 测试结果

使用自制的数字存储示波器和tektronix TDSl002型数字示波器测量输入信号,其中部分测量数据如表1所列。

基于单片机和FPGA的简易数字存储示波器设计

通过对比测试和结果分析,各种输入信号在自制数字存储示波器上可精确显示波形,并且实现波形的双踪显示及波形水平、垂直平移,频率、平均值、峰峰值的测量,误差小,达到一定的精度要求。
8 结语

本系统设计采用单片机作为核心控制器,充分利用FPGA的可编程逻辑功能,完成相关电路设计。软硬件有机结合实现简易数字存储示波器的设计,系统总体功能完善,稳定性高,使用方便。

来源: 电子工程世界

围观 492

ARM最近刚刚宣布了对DesignStart项目的升级,加入了ARM Cortex-M3处理器。现在,可以通过DesignStart Eval即时、免费地获取相关IP,对基于Cortex-M0或者Cortex-M3处理器的定制化SoC进行评估、设计和原型开发。

原型设计的重要性常常被忽视,我希望通过本文以更多的细节阐述原型开发的重要性以及Cortex-M原型系统(MPS2+)如何帮助你方便地开始对你自己的设计进行评估和原型开发。
DesignStart不仅仅有处理器IP。DesignStart Eval和Designstart Pro包括处理器IP、一个参考子系统、以及免费的在线社区支持。此外,还提供来自ARM和ARM合作伙伴的专用支持、培训以及各种服务。

DesignStart Eval已经可以运行在ARM Cortex-M原型开发系统(即MPS2+)之上,帮助你更方便地迅速开始对你自己的设计进行评估和原型开发。

一旦你开始设计全新的定制化SoC,下一步就是进行原型开发。原型开发是SoC设计流程中的一个关键步骤:它不仅允许你对设计进行验证,也帮助你避免对一个有问题的设计进行流片。在进行验证的同时,你还可以在芯片出片之前就用原型进行软件开发,从而节约宝贵的时间。ARM的Cortex-M原型系统就是一个完美的解决方案。

为什么选择Cortex-M原型系统?

Cortex-M原型系统提供针对Cortex-M系列的快速FPGA原型开发,包括实例设计和软件支持。与市场上其它的开发板不同,该FGPA平台是针对Cortex-M处理器专门定制的,这意味着你可以快速开始和进行开发,从而专注于实施差异化。它支持ARM mbed OS、多个调试连接器(包括CMSIS-DAP),以及16MB零等候状态内存;这些都得到ARM的直接支持。

在MPS2+中实施的Cortex-M3 DesignStart

图:在MPS2+中实施的Cortex-M3 DesignStart

Cortex-M3 DesignStart包允许你用最喜欢的仿真器(Mentor® Questa®、Cadence® Incisive或Synopsys® VCS®)进行参考子系统设计的仿真,然后将你自己的IP加入设计,并在仿真环境下进行开发,对现有测试进行编辑。

ARM已经用DesignStart Eval包设计了一个实例FPGA实施,用于Cortex-M原型系统。你可以用这个实例将测试进一步延伸,针对这个平台对你的设计进行合成,以及在FPGA目标上重新运行各种仿真测试。

ARM Cortex-M3处理器以网表文件的形式提供,支持调试和追踪。Cortex-M3实例子系统设计尺寸非常小,在FPGA中留有充裕的空间让你用自己的IP进行扩展。板上有大量的外设,你也可以通过连接Arduino子板的转换器加入更多的外设。如果你找不到你所需的外设,你可以设计自己的板子,并使用所提供的PCB文件用于子板。请访问Cortex-M原型系统网站上的Arduino章节,获取实例文档。

简单、快速、方便使用

使用这一平台进行启动和运行非常方便!将电源和USB线连上PC,等待平台作为USB大容量存储设备顺利连接,将你的DesignStart文件拖拽上去,然后按下重置键来载入新的FPGA图像。一旦FPGA被载入,你可以将你的调试器连接到众多调试连接器之一,或者用CMSIS-DAP连接到核。这里有一个视频,提供更多如何对板子进行编程以及使用Keil MDK调试器的信息。

你也可以使用现有的Intel® Quartus® Prime项目文件来迅速添加自己的IP、对它进行合成以及创建FPGA图像,从而为你的IP开发软件或者开始为你的SoC创意开发原型。我们撰写了一个名为“Cortex-M3 DesignStart FPGA用户指南”的文档,详细描述了这一流程。该文档也是DesignStart下载包的一部分。

如何购买Cortex-M原型系统?

如果你还需要更多的理由来使用Cortex-M原型系统,那么你一定会很高兴地获悉,在未来一年,面向所有用户ARM将Cortex-M原型系统平台的价格降低了50%,现在只需495美元。考虑到FPGA相对庞大的尺寸(30万逻辑单元,300K LE)以及其他所有的功能(包括对mbed的支持),你就会同意这个价格非常低廉。你可以从www.arm.com/mps产品网页下单订购。

欲了解更多关于DesignStart的信息或者注册,请访问 http://designstart.arm.com

围观 335

目前国内对1553B总线接口板的设计一般基于DDC公司BU-61580协议芯片完成,但只能完成协议处理部分,应用时还需外围的存贮器和微处理器等辅助芯片。故采用现场可编程门阵列(FPGA)实现整个接口板核心的设计。

1 系统总体架构

1553B总线信号进入接口板后,首先通过隔离变压器进行电平转化,使之匹配后面收发器的工作电压。收发器再把电平转化后1553B差分信号转化为可识别的TTL电平。但此时的信号仍然是曼彻斯特Ⅱ型码,故需经解码和串并转换,同时完成数据字的同步、数据、曼彻斯特码错误的检出、奇偶检测和位/ 字计数等,处理后的数据串并转换后存入内存再对其进行相关的协议处理。发送数据时,将终端接收的数据暂存于内存中,等待发送命令。一旦收到发送命令,即发送数据并通过并串转换后进行曼彻斯特编码且调制解调后发送到1553B的双余度总线上。

2 系统硬件构成及其实现

信号调制解调用隔离变压器和收发器,分别采用的是HOLT公司PM-DB2725EX和HI-1570芯片。而从曼彻斯特编解码后的部分都可在一片FPGA芯片内实现,选定Altera公司CyclONe系列的EP1C12作为主芯片。其中FPGA与总线间接口部分的电路如图2。

FPGA与总线间接口部分的电路

3、FPGA内部的模块构成及实现

FPGA片内的实现,通过Verilog程序和调用QuartusII软件内部宏模块完成,可分为双冗余曼彻斯特II编解码及串并转换、总线传输逻辑、终端协议和消息处理、内存及控制器和子系统等模块。

3.1 双冗余曼彻斯特II编解码及串并转换模块

该模块实现曼彻斯特码的编解码,串并转换后同总线传输逻辑模块进行通信。原始数据采样采用16M时钟频率。

3.2 总线传输逻辑模块

该模块对上一模块的16位并行数据按1553B协议定义进行分解、存储,并给协议模块响应信号及对其命令执行,发出相应状态字和数据字。

3.3 内存及控制器模块

用作系统寄存器和与下级子系统进行数据交换的数据存贮区,以响应其它各模块可能存在的寄存器和数据访问,该模块由以下3个子模块组成:

DPSRAM模块:为Quartus软件宏模块altsyncram的实例化调用,在物理上为FPGA芯片片内SRAM的调用。实例化调用后为双端口可同时读写的同步SRAM内存,以满足总线传输逻辑,协议处理模块,初始化自检模块之一和子系统模块可能同时存在的访问请求。

RAM_Control模块:为上一模块DPSRAM的内存控制器,根据上游(user_interface模块)信号产生符合DPSRAM时序的读写使能,地址,数据和读写确认信号。

user_interface模块:解决多端口输入不能直接线与和定向输出从DPSRAM读取的数据的问题。

3.4 终端协议和消息处理模块

该模块解析接收到的命令并通知总线传输模块做出相应的响应。可分为以下4个子模块:①read模块完成指令字的读取;②protocol模块完成指令字分析和协议的处理;③write模块根据protocol模块解析命令后发过来的指令完成对应状态字的修改;④choose模块将对read和 write两个模块发给ram的命令和地址进行选通。

3.5 子系统模块

子系统含收发、终端地址产生和校验等模块。①收发模块:完成存贮器16位的并行数据和2400bit串行数据的转换;②终端地址产生和校验模块:终端地址由子系统的拨码开关设定,即读取拨码开关的电平值并产生相应的地址奇校验位后存贮到内存的终端地址寄存器中,并初始化状态字。编写以上各模块代码时,状态机跳转的条件原来是检测电平值,但在仿真过程中发现有时检测不到或多次检测到从而导致状态机误操作,改用如下跳变沿检测后问题得到解决,对应代码为:

对应代码

其原理为:将需检测的信号不断地通过2个D触发器连续锁存2次,当检测到2次锁存的值符合跳变沿条件时才执行动作如图3。采用该检测方式后程序仿真不出现类似不稳定问题,但同时也造成1个时钟周期的额外延时。

3.6 仿真及FPGA实现

以上各功能模块采用Verilog编写,内存则调用QuartusII宏模块。整个程序的功能仿真,综合布线和最后的时序仿真均用ALTERA公司的QuartusII完成。各模块综合后在QuartusII中编译后生成symbol。

为某型号调谐滤波器与1553总线通信的消息仿真波形。其中:RT地址设定为00101,即图4中拨码开关pat4~pat0的电平值,子地址为00001。复位后第1条消息为RT不发送数据请求时发送矢量字模式命令及其响应,状态字所带的数据字为&H0000,该命令循环发送至 RT直到有请求第3条消息的情况;第2条消息为RT接收1个数据字命令及其响应;第3条是当RT有发送数据请求时的发送矢量字及其响应,状态字所带的数据字为&H0001;第4条是RT发送两个数据字命令及其响应;第5条是带数据字的同步模式命令及其响应。

由仿真波形可见,该系统基本满足该滤波器的应用,为进一步验证其实际应用和其他协议,将其下载至FPGA中进行测试。FPGA内部是基于 SRAM结构的,因此需要1片配置芯片固化其内部结构,故采用JTAG模式和主动串行模式(AS)2种配置模式。调试时使用JTAG模式直接将逻辑写入 FPGA内部,调试好后再用AS模式将程序写入配置芯片EPCS4中,经测试通过。

4 结语

基于FPGA技术的总线接口板设计,已通过某军用飞机的测试,实现1553总线和子系统的通讯。将FPGA技术应用于1553B总线接口,设计成本降低,设计周期缩短,系统的集成度提高,扩展能力增强,具有重要的现实意义和应用前景。

来源: 电子产品世界

围观 423

随着物联网智能化的提升和不断迭代,FPGA将发挥更多的数据预处理、桥接、I/O扩展等作用。

电子企业的成长一般都会呈现“S型”曲线,与产业的走势休戚与共。要与之对抗,需应对技术和商业模式的双重挑战。英特尔PSG(可编程解决方案事业部)产品营销与策划副总裁Alex Grbic认为,未来万物皆互联的时代,技术层面要解决互操作性,满足相关标准协议,或某应用层面的协议,以及如何在大量数据的收集和处理的同时提升性能和降低功耗。商业层面涉及系统的灵活性和可扩展性,此外价格是重要考量。因而,对于IC的革新至关重要。

单打独斗拿不下物联网?MCU需要FPGA助攻

01FPGA适应智能化和I/O扩展需求

在物联网的方案中,MCU扮演核“芯”角色。但随着应用的更新迭代,MCU+的趋势也愈来愈明显,特别是MCU+FPGA应用广泛,以满足性能、可扩展以及集成的要求。

Alex Grbic举例说,以汽车业为例,随着智能化的提升,汽车传感器会越来越多。此外在显示方面,不仅LCD显示屏的数量会翻番,而且分辨率要求也越来越高,需要芯片进行更高速的处理、支持更高的带宽。在工业和嵌入式视觉领域,也需要不断满足智能、视频图像和传感器等的升级需求,处理更多的数据,支持更高的I/O带宽。

这时“单打独斗”的MCU或难以“招架”,需要协处理器来做一些数据预处理,或I/O扩展。相较而言,低端FPGA因其配置和可编程,不失为协处理器最佳选择。

“比如在视频监控中,FPGA可作为视频信息预处理后,再交付给MCU运算。或者在汽车智能应用中用于后视摄像头和传感器融合,进行多传感器数据的高速处理,再传给MCU进一步处理。针对把成本和功耗作为设计决策关键要素的应用,则可做芯片之间的桥接、I/O扩展等。此外,在某些应用场景中,FPGA亦可单独做主芯片。”Alex Grbic表示。

虽然低端FPGA作用显著,但对其也提出了支持高速收发器和硬浮点运算的新要求,需要与时俱进。英特尔PSG最新发布的低端Cyclone 10 FPGA可谓有备而来。

02新FPGA的“和而不同”

虽然FPGA玩家屈指可数,但低端FPGA基本是个个涉足,竞争激烈。但Cyclone 10 FPGA与其他低端FPGA不同的是,其GX型号是业界首款集成10G收发器和硬浮点数字信号处理(DSP)的低功耗FPGA,处理速度高达134 GLOP,性能相对前一代Cyclone V有两倍的提升至1.4G,但功耗却与其相当。而LP型号则更强调的是低功耗和低成本,功耗仅为前一代的60%。

因而,在高I/O效能及对速度有关键性需求的应用,包括汽车、工业和嵌入式视觉领域,GX完全胜任;这些应用涉及的芯片之间的桥接、I/O扩展等,LP亦可发挥作用。

单打独斗拿不下物联网?MCU需要FPGA助攻

对于成本和功耗的双重优化,Alex Grbic英特尔PSG的诀窍在于:一是采用台积电成熟的20纳米工艺;二是架构的创新和软件工具的优化,如针对FPGA的应用场景会定制或者筛选匹配的软件工具。架构创新。三是测试和封装的一些流程的优化。

值得注意的是,Cyclone 10 FPGA集成了可定制的软核(Nios II处理器),实现可编程和可配置,但是不支持ARM,是否英特尔的FPGA策略会有所改变?Alex Grbic回应说,英特尔现有的Cyclone V和中端Arria 10和Arria V均支持ARM,上一代的Cyclone V可平移到Arria 10和Arria V。未来的产品规划也都会将集成ARM的SoC纳入其中,这不会改变。

03成英特尔IoT大战略重要一环

值得注意的是,英特尔PSG开发的 Cyclone 10,锁定汽车、工业、嵌入式视觉等应用,与英特尔物联网部门的战略相当一致。

近些年英特尔在全力开发更开放、安全及可扩充的IoT解决方案,构建IoT生态圈。将Altera纳入囊中后,FPGA也成为其大生态良性循环的重要棋点。

Alex Grbic也着重指出,Cyclone 10与英特尔IoT的战略相符。英特尔的FPGA可涵盖从万物到云端的所有领域。Cyclone 10主要应用场景集中在万物和管道端,其中价值在于进行智能化数据处理,或预处理完再上到云端,减轻云端负荷。针对更高端的云端应用,则可采用英特尔中端和高端的FPGA。

单打独斗拿不下物联网?MCU需要FPGA助攻

如今,中高端FPGA在云端+CPU或+GPU之势正兴,英特尔推低端Cyclone 10,或意图进一步加强在万物和网络端的实力。而有着英特尔的大生态规划及先进的工艺节点“护航”。Cyclone 10的市场表现亦值得期待。

来源:智慧产品圈

围观 280

本文将详细分析单片机、ARM、FPGA嵌入式几者之间的特点及区别。

单片机的特点:

(1)受集成度限制,片内存储器容量较小,一般内ROM:8KB以下;

(2)内RAM:256KB以内。

(3)可靠性高

(4)易扩展

(5)控制功能强

(6)易于开发

ARM的特点:

(1) 自带廉价的程序存储器(FLASH)和非易失的数据存储器(EEPROM)。这些存储器可多次电擦写,使程序开发实验更加方便,工作更可靠。

(2) 高速度,低功耗。在和M51单片机外接相同晶振条件下,AVR单片机的工作速度是M51单片机的30-40倍;并且增加了休眠功能及CMOS技术,使其功耗远低于M51单片机。

(3) 工业级产品。具有大电流输出可直接驱动SSR和继电器,有看门狗定时器,防止程序走飞,从而提高了产品的抗干扰能力。

(4) 超功能精简指令,具有32个通用工作寄存器,相当于M51单片机中32个累加器!从而克服了单一累加器工作的瓶颈效应。

(5) 程序下载方便。AVR单片机即可并行下载也可串行下载,无需昂贵的编程器。此外,还可以在线下载!也就是说可以直接在电路板上进行程序修改和烧录。

(6) 具有模拟比较器、脉宽调制器、模数转换功能。使得工业控制中的模拟信号处理更为简单方便。

(7) 并行口、定时计数器、中断系统等单片机内部重要资源的功能进行了大幅度提升,使之更适合工业生产过程的实时控制。

(8) 其时钟频率既可外接也可使用单片机内部自带的振荡器,其频率可在1MHz-8MHz内设置,使得硬件开发制作更为简洁。

(9) 强大的通讯功能,内置了同步串行接口SPI、通用串行接口UAST、两线串行总线接口TWI(I2C ),使网络控制、数据传送更为方便。

(10) 超级保密功能,应用程序可采用多重保护锁功能。可低价快速完成厂家产品商品化等等。 除上述特点外“零外设”也是AVR嵌入式单片机的重要特征。由于该芯片已内置了程序存储器、晶振并增加了在线汇编功能。

所以AVR单片机芯片接上直流电源,下载个程序就可以独立工作。无需附加外部设备,无需使用昂贵的编程器和仿真装置。这给我们学习和开发带来了便利条件。

FPGA的特点:

(1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。

(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

(3)FPGA内部有丰富的触发器和I/O引脚。

(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

(5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

嵌入式系统的特点:

1、系统内核小

由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。

2、专用性强

嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常 紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也 需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要 对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的 “升级”是完全两个概念。

3、系统精简

嵌入式系统一般没有系统软件和应用软件的明显区分,不要求 其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。

4、高实时性的系统软件

OS是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。

5、嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统

嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任 务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS (Real-Time Operating System)开发平台,这样才能保证程序执行的实时性、 可靠性,并减少开发时间,保障软件质量。

6、嵌入式系统开发需要开发工具和环境

由于其本身不具备自举开发能力, 即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套 开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬 件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的 概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。

来源:网络(版权归原著作者所有)

围观 373

页面

订阅 RSS - FPGA