在基于FPGA支持网络的气象站应用开发中,Altium专家服务组采用了即将面世的产品-Nexar的早期测试版本。
Altium专家服务组(APS)的一个主要目标就是通过介绍新的技术来帮助已有的和潜在的Altium的客户。因此,在Altium新产品正式发布之前,让他们领着先去看看那些即将面市的产品。以下是他们在设计过程中的一些真实体验,供借鉴。
当我们着手构建Nexar时(注:Altium的新产品,目标是把系统嵌入FPGA中),我们就决定让自己站在客户的角度,尝试一下利用该产品在"真实世界" 中进行设计。这样我们才可以体验新客户最有可能碰到的问题,并掌握如何使用Nexar和现场设计(LiveDesign)方法是怎样影响开发周期的第一手资料。
我们选择设计构建一个相对简单的嵌入式应用,但又必须是一个典型应用,是世界上不是成千也要是上百的设计者每天都会遇到的一种。我们的挑战就是将该应用集成到FPGA平台,其中包括处理器。
我们选择的应用是一个需要网络化的气象站,要测量外界温度,风向,风力。有两个衍生版本:支持互连网(internet)的版本(可以用于独立配置)和CAN总线网络版本。
具有互连网功能的版本以一个条型图的方式在VGA监视器上显示气象信息。它可以通过标准RS2332串行接口与PC机连接,这样就可以用浏览器查看当前的气象状况。
CAN网络版包括一个路由器(基于同样的配置构造),通过CAN总线和一个或多个远端气象站连接。CAN总线用作TCP/IP的传输层。
一、系统硬件
气象站系统基于8051兼容微控制器,后者在Nexar上作为预合成、预验证的软核,它可以直接在FPGA实现各种功能。与处理器核一起,基于FPGA的系统还包括一个VGA的控制器、一个CAN控制器和用于外部存储器的连接逻辑、LCD、键盘和I2C总线,后者与模数转换器连接。
气象信息来自一个外部连接的风速计和一个半导体温度计(NTC)。风速计分别以脉冲输出和模拟输出表示风速和风向。除了风速计和温度计,所有的芯片外硬件都可在基于FPGA的开发板(NanoBoard)上获得,是与Nexar产品一起提供的。
TSK51核是系统的核心部分,是与8051处理器指令集兼容的。它从外部程序存储器运行并使用外部数据存储器。另一部分存储器用于VGA的控制器(在互连网版本中)。在CAN总线路由器中,我们不需要任何VGA的控制器。因此,我们决定创建更多迷人的HTLM网页,这就需要内存中额外的存储空间。鉴于8051可以寻址64K字节外部数据存储器,我们决定在此位置加入一个RAM磁盘驱动器。
在存储变换中,基于FPGA的构件必须易于访问。在初次试验中,我们创建了一个地址解码器,用于解析外部数据存储器的地址。随后,为VGA寻址并从特殊功能寄存器空间切换存储器。
因为处理器和VGA控制器可能会同时访问外部存储器,所以高速缓冲存储器也是需要的。尽管处理器核可以挂起,但是VGA控制器却不行。
二、系统软件
应用软件基本上是由初始化、带有TCP/IP操作的主循环、键盘操作、测量和显示程序组成的。本次应用没有采用RTOS(实时操作系统)。
所有的TCP/IP通信都是由随Nexar提供的Altium的TCP/IP软件包来处理的。为了启动TCP/IP,我们所要做的就是采用配置工具设定堆栈,并将其相关文件加入到项目(project)中。对初始化程序的调用和每次对主入口程序的调用都足以使堆栈启动并运行。事实上Nexar系统内的所有设备都有驱动,非常有助于开发工作。
路由器/协议转换器是完全不同的层面。尽管堆栈有能力运行在多程序之上,但事实证明,没有任何TCP/IP知识,可以更容易进入CAN的领地。
如果TCP/IP堆栈收到一个错误的TCP/IP包(包括其他地址的数据包),它就调用异常处理程序,通常是驻留在用户应用中的。在本例中,我们仅仅简单的把消息分割成每8字节一个的小块,通过CAN接口重新传送数据包。任何在CAN总线上收到的信息都组合成TCP/IP包然后压入堆栈缓冲器,并从那里通过堆栈的串行驱动器传送给主机。
三、设计挑战
因为从一开始就有硬件,所以在元器件选择和布板上几乎没有什么设计挑战。当然,把绝大部分的设计都放在FPGA上就意味着设计人员不必等待板的设计和完成,而是几乎同时可以收到电路如何的反馈。
与Nexar产品一同发布的TSK51 IP核看起来完全像是其物理副本。增加内部存储器简单直接。但是,当我们查阅处理器文档时,我们发现了它与一个真正物理器件之间的有趣的不同之处。不像8051一样,TSK51的外部总线分为单个的输入和输出总线。这就开放了一些很好的可能性。例如,当连接键盘时,4X4的键盘配置总共只需要4比特,而在通常的8051上则占用整个8比特的的I/O总线。
系统中的其他元件使用起来也十分方便。例如,添加NanoBoard的键盘就像从元件库里调出符号并挂接上一样容易。不需要考虑实际的引脚线,因为这些在提供的约定文件中有所描述。
设计中第一个真正的挑战就是使TSK51和VGA控制器使用同一个外部存储器。由于VGA访问周期的实时性,不能简单的停止VGA控制器或不引起CRT显示器上出现雪花点的情况下窃取循环。解决方法就是采用两个高速缓冲存储器,每一个存储器都要足以包含一单个扫描线信息。这些存储器设置在FPGA 芯片上,并由一串VHDL代码控制,当VGA控制器正在处理一个偶扫描线时,代码就放在奇数存储器中,反之亦然。它是通过监视处理器的地址锁存信号实现的。一旦这个信号被激活,处理器就是地址读取(或者写入)的输出部分,而不需要总线了。VHDL逻辑使用存储器总线向高速缓冲存储器中读取数据。在解决这个问题上,采用传统逻辑上的IP核的优势是显而易见的。
尽管FPGA工作频率在40MHz(与硅器件比较,它能使TSK51软核快速的闪烁),但向屏幕上写入影象证明是很慢的。在分析代码时,很显然主要的时间花费是在显示像素物理地址的计算上。
这就是Nexar本质和其"现场设计"环境能真正展示魅力之所在。尽管我们有希望进入开发,并且在传统的设计流程中,硬件到目前为止已完全设置完毕,但我们仍能选择通过硬件替换部分代码。因为在开发时我们是工作在一个可重新配置的NanoBoard平台上,所以没有其他更多的花费和时间上的惩罚。我们可以简单的更新硬件并把它重新下载到NanoBoard上,而无需构建一个新的物理硬件模型。
在设计中,我们实现了四种特殊功能的寄存器(SFR),它们放置在TSK51内的SFR空间。第一和第二个SFR分别决定写入象素的X和Y轴坐标,第三个SFR决定它的颜色,第四个寄存器是一个命令寄存器,用于触发行动。X、Y坐标可以像命令字节一样自动地增加。其他命令包括能用指定的颜色完全清除屏幕并立即写入两个像素。采用这种硬件加速,向屏幕上写入一个像素只花费用软件写入时间的五分之一,写入图象消耗的时间是用代码的十分之一。
四、总结
开发进程过半时,我们收到了一个新版本的NanoBoard,它的管脚布局与最初的非常不同。Nexar和支持"现场设计"平台的最佳特点之一,就是支持用约定文件的概念,即描述哪一个FPGA管脚与外设的哪一个管脚相连。仅仅通过选择不同的约定文件,我们在收到新硬件后十分钟内就能建起系统并运行。
用所提供的NanoBoard开始开发证明是有一个真正优势的。在需要构建一个物理的PCB板之前,软件和硬件可以被制造并得到完全地测试。这种软硬件协同设计方法减少的开发时间相当可观。如果在你设计的硬件上发现了错误,根本就不需要接上电烙铁。简单的调整图表、重新合成、下载到Naon-Board就行了。
综上所述,我们发现采用Nexar的设计过程简单而直观。就像我们一样,即使是没有可程序逻辑设计经验的工程师,也不用去面对难以逾越的学习屏障。用户可充分利用FPGA所特有的优点,采用所熟悉的设计技巧轻松进行设计工作。灵活的设计划分、软硬件协同设计还有标准硬件和软件构件模块,这些都明显地缩短了上市时间。Naxar的交互特性和其支持的"现场设计"平台使得FPGA设计成了真正唾手可得的体验。事实上,我们正急不可待地盼望Nexar正式发布,希望它和"现场设计"理念能被未来用户在应用开发过程中发扬光大。
1楼
0
0
回复