Xilinx hijinx,第 1 部分: ML403 全新体验

深入了解 ML403 板

通过本文,了解选择基于 FPGA 的系统而不选择传统的硬 IP 微控制器的原因,借鉴传统编程人员首次接触基于 RAM 的可编程逻辑时所面临的学习曲线。在这个新的系列中,Lewin Edwards 将打开 Xilinx ML403 嵌入式开发工具包,为您详述其中的一些特性。

Lewin Edwards (sysadm@zws.com), 设计工程师, Freelance

Lewin A.R.W. Edwards 现任职于一家“财富 50 强”公司,是该公司的一名无线安全/防火安全设备设计工程师。在此之前,他用了五年时间在 Digi-Frame Inc 开发 x86、ARM 和基于 PA-RISC 的联网多媒体装置。他在加密和安全软件领域有着广泛的经验,并且是两本有关嵌入式系统开发的书的作者。您可通过 sysadm@zws.com 与他联系。



2007 年 3 月 09 日

本系列文章以实战的方式介绍了如何使用带有 Embedded Development Kit (EDK) 的 Xilinx ML403 板,开发一个高性能、基于 PowerPC® 的应用程序。本系列的目标读者是那些对现有 PowerPC 部件比较熟悉又十分渴望获得 Field Programmable Gate Array (FPGA) 设计灵活性的开发人员;本系列的总体目标是阐述该方法对系统设计的利与弊,并给出初级开发人员需要经历的学习曲线。

实现上述目标实在是不太容易,因此需要分而治之。为了很好地理解本系列文章,您应是一位有经验的 C 编程人员,并且对 PowerPC 架构有一定程度的了解,但不需要一定具有可编程逻辑设计的经验;本系列的一个明确目标就是提高您在这方面的技能。

FPGA —— 软硬件的优越性

在深入探讨细节之前,先要弄清两个问题:使用 FPGA 可带来哪些益处?应选择在什么地方使用 FPGA?简单地说,FPGA 的主要益处就是,它可在确定软、硬件的界限方面展现出空前的设计灵活性。您可能会完全用软件实现一个应用程序(可能是运行于常规的 PowerPC 单板计算机上的一个技术演示程序)。您也可能会将一个高性能核心(如 PowerPC)放入 FPGA,对原始代码稍做改动后运行该代码。随后,可将该应用程序的各部分迁移到 FPGA 中的虚拟“硬件”,从而释放 CPU 资源供其他任务使用。如果您还不能准确地确定项目中的哪些部分需要通过软件完成、哪些部分需要通过硬件完成,则 FPGA 可能会是您的一个理想的选择。使用此类复杂的可编程逻辑可消除对协处理器以及特殊用途的硬件的需求。

FPGA 也被频繁地用作通向完全定制的 Application Specific Integrated Circuit (ASIC) 的铺垫。如果高屋建瓴地去看待此过程,这实际上就要求您首先要让应用程序在 FPGA 中运转起来。之后您尽可以出售此设计,并观望市场是否认同大规模生产。如果一切进展顺利,则可将此设计提交给 ASIC 设计机构,后者为您将其转化为定制的硅板。当然,具体细节比这要复杂一些;芯片设计可能需要进行处理以适应 ASIC,并且全部电路的设计也肯定要相应做出调整。

请注意,时下,围绕上述观点有一些很美观的 PowerPoint 演示,力图说明使用 FPGA 是如何便宜、低能耗或比使用 “真正” 现成的部件更理想(一个供应商甚至声称,如今在 FPGA 中实现一个 8 位微处理器核心比购买一个真正的处理器部件还便宜;这就几乎等于是说,现在的技术已达到这样一种水平,可以跨越星期二直接跳到星期三)。真实的情形是,FPGA 的可编程性使它天生就比同等的硬布线芯片大(就晶体管数量而言)。为了将相应功能挤入狭小的物理空间,FPGA 趋向使用前沿的微几何学技术,这就导致了相对较高的电流泄漏。

这就是说,您若迁移到 ASIC,就会发现耗电量减少。ASIC 基于较老的(礼貌一点说是“成熟的”)处理方式,有效尺寸更大一些。 它也没有 FPGA 所要包含的所有额外的开关逻辑,这是由于它并不需要实现任何内部硬编码以外的设计。

在本系列中,我将特别介绍 Xilinx ML403 EDK,它是一种高端开发平台。此工具包目前售价为 895 美元。这听起来可能有些贵,尤其是对于像我这样的免费工具热爱者来说就更是如此。但是,仔细观察一下,您就会发现它确实物有所值 —— FPGA 芯片本身一套售价约为 200 美元,并且该程序包还包含了 Xilinx 设计软件的“全套”版本(在这点上稍后将做详细介绍)和一个基于 USB 的下载器电缆。更重要的是,该板自身拥有很多接口和特性,使它本身就堪称一种极其划算的单板计算机:

  • 两个 USB 外围端口和一个主机端口
  • 一个串行端口
  • 千兆比特以太网
  • 带有模拟前端的 AC97 音频解码器和用于线入、线出、耳机出、麦克风入的标准 3.5mm 立体声插孔
  • PS/2 键盘和鼠标接口
  • 模拟 VGA 接口
  • 64MB DDR SDRAM 和 8MB 线性闪存,外加 1MB ZBT SRAM
  • 4Kbit I2C EEPROM
  • 32Mbit平台闪存、带 CompactFlash 槽的 SystemACE 配置接口和可从主线性闪存为 FPGA 编程的 CPLD

所有这些对内存的讨论让我想到一个十分重要,但对具有传统软件背景的人来说却不那么明显的观点,那就是,Virtex-4 是基于 RAM 的 FPGA。


Virtex-4 是基于 RAM 的 FPGA

这就是说其内部状态必须一加电就从非易失性存储介质加载。如果您已习惯于处理基于闪存的芯片,则可能对基于 RAM 的逻辑感到很迷惑,对于前者,一旦烧制完成,它将一直保持配置直至被显式地清除。有以下几种策略可用于在设计中引导 FPGA 配置,而 ML403 可让您选择要使用其中哪一种:

  • 就开发目的而言,可通过 JTAG 接口直接从主机 PC 加载 FPGA。
  • Virtex-4 可直接从特殊用途的“平台闪存”芯片自引导。ML403 拥有 32Mb 平台闪存,该闪存可通过 SystemACE,或直接在 JTAG 之上编程。尽管此方法的组件数量最少,但并非最便宜,这是因为特殊的闪存相当昂贵;其他的存储介质可能便宜得多,即使是将需要通过接口连接到 FPGA 的外部组件考虑进去也是如此。一些设计可能使用外部微控制器从外部存储设备加载比特流。此方法通常在以下情形中使用:仅使用 FPGA 实现外围设备,这时通常系统中已存在另一个微处理器。例如,插件 PCI 卡可能使用此方法来初始化 FPGA。如果系统中 FPGA 本身将作为主处理器,则不应该为该系统选择此方法。
  • Xilinx 提供一种称作 SystemACE 的封装解决方案,有以下两种版本可用:一种使用线性闪存,另一种使用 CompactFlash 卡(ML403 采用的是 CompactFlash )。这只是先前示例中的一个特例。ML403 也携带 CPLD (Complex Programmable Logic Device),后者可从主 NOR 闪存中存储的比特流配置 FPGA。

由此带来了两个重要观点:首先,设计需满足一加电就配置 FPGA 的需求;其次,需密切注意连接到 FPGA 的 I/O 线路的电路; 在系统初始化时的一段有限(可能相当长)的时间内,那些线路将会一直不大稳定。

因此,要确保您完全理解整个系统的架构: 您的设计需拥有某种方法来一加电就配置 FPGA ,并需要某些非易失性内存来存储它实际要运行的 PowerPC 代码。如果使用 CPLD 方法配置 FPGA,则可在一个 NOR 闪存芯片中存储 FPGA 比特流和所需的代码;这可能是最简单的系统设计。


第一印象和初始设置

当我第一次打开货运包装时,我以为 Xilinx 给我送来了两个工具包,因为包裹中有两个表面上一模一样的盒子。第一个盒子中包含 ML403 板本身(上面已预安装了一个 512MB 的 CompactFlash 卡)、Embedded Software Development Kit (三张 CD)、ISE 7.1(另外三张 CD)以及 Development Kit Reference CD。第二个盒子中 包含一束电缆 —— 算得上是意料之外的“惊喜”吧 —— 外加 ISE 的另一个副本、 ModelSim 的 Xilinx 版、ChipScope Pro 的评估版以及一些试用软件,总共 17 张盘。

看着这一大堆磁盘可能让您感到无所适从。建议您按以下描述的顺序执行安装流程。

请注意,此工具包中提供的所有软件安装前都需要先注册。而且要注意,使用 Firefox 会使 Xilinx Web 站点的某些部分和 CD 上的 HTML 文件不能正常运作。 同样,要注意 ISE、ChipScope 和 EDK 的注册 URL 各不相同;如果安装密钥被拒绝,请查看 是否连接到了安装产品对应的正确的 URL。

出于一些原因(您稍后将会明了),建议您为使用此软件进行开发设置一台专用的 PC。RAM 越多越好 —— 2GB 就不错。出于性能考虑,最好避免使用反病毒软件 —— 这就意味着为了安全起见,不能将该机器连接到网络。

请注意,我还没有对该软件的 Linux® 版本和 Windows® XP 版本的性能进行比较。使用 Linux 版本可能更好些。

安装完 CD 上的一切内容后,开始指南将引导您安装第一张 CD 上的服务程序包。因为总的说来 CD 上的文件都比较陈旧,所以建议您直接访问 Xilinx Web 站点并下载所有最新的服务程序包(大约 800MB)。现在来总结一下,安装所有内容并使其正常运作所需执行的步骤为:

  1. 将 “Development Kit Reference CD” 复制到硬盘。
  2. 使用第二个盒子中的 BaseX 许可序列号安装 ISE。注意此软件的许可期限为一年,从第一次激活时算起。
  3. 安装 EDK。
  4. 可选择性地安装 ChipScope(但许可期限仅 60 天,作评估用)和 Modelsim XE。选择免费限制版本。
  5. 下载并安装所有更新。由于 Xilinx Web 站点的不兼容性,这一点做起来可能很有挑战性。建议使用 Microsoft® Internet Explorer,完全禁用所有可能的安全设置、弹出窗口阻挡等等(顺便说一句,这样做仍然不能解决我的所有问题 —— 尽管它明显对大多数人有效。最终我只好使用 wget 来解决)。

您将花费一到一个半工作日来解压缩、连接、安装和下载所有这些软件以及安装所有的补丁等等。因为此软件包含了大量微小文件,所以其性能将受到文件系统关联软件如反病毒程序的巨大影响。因此我设置了一台没有连接到 Internet 的单独的 PC,专门用于该板。我的这台机器的处理器为 Athlon XP-M 2800+,带有 2Gbyte RAM,运行 Windows XP Professional 系统。出于一些原因(本系列后续文章将会揭示这些原因),最好跟我一样设置一台专用的机器来专门处理 FPGA 工作;如果可能的话,不要在该机器上面安装任何其他软件。

ISE 用户界面允许您在示意图视图添加实体或将其作为 HDL 对象(Verilog 或 VHDL)添加。示意图界面中除了一个用于添加 16 位累加器的方法外,再没有其他的方法,我对此感到非常迷惑。这是一个假象;如果您观察下面的屏幕图,将会看到在顶部面板中隐藏了一些用户界面元素。 要显示这些元素,需将分隔器拖到 No Options 的上方;这就将显示其他可用符号的列表。PowerPC 405 核心位于题头 GigaBit IO/Processor 的下方,为了放置它,示意图需是 E 大小或更大。

图 1. 用户界面元素
图 1. 用户界面元素

因为我们在处理整个 EDK,所以暂时无需担心 ISE 的问题;直接启动 Xilinx Platform Studio 即可。 启动 Platform Studio 后,将会呈现一个通用的 new-project 对话框。选择 Create a new project using Base System Builder Wizard 并单击 OK。在下一个对话框中,选择或创建一个目录来存储项目文件(我使用的是 C:\XILPRJ\IBM-1)。单击 OK 后,向导将会启动。

选择 I would like to create a new design 并单击 Next。 现在将要求您在一些标准目标平台中做出选择;此版本的 EDK 支持来自 Xilinx 的 8 种不同的目标板。请注意,ML403(我正在使用的)和 Spartan-3 Starter Board(参见 参考资料)在此都已列出,但您不能在 Spartan 芯片上实例化 PowerPC 核心。

在下一个对话框中,将要求您在 Microblaze 和 PowerPC 405 处理器核心之间做出选择。请注意,实际上您可在 FPGA 中实例化多个处理器(Virtex-4 支持两种 PPC405 核心),但向导不支持这种设计。选择 PowerPC 并单击 Next 后,您将获得一些与处理器相关的选项;除更改 “Processor Clock Frequency”,将其下调到 300MHz 并单击 Cache Enabled 复选框外,保持其他选项为默认值。

下一个对话框中是与板上序列端口和调试 LED 相关的一些选项。

在下一个对话框中,您将看见更多外围设备:按钮(键盘连接器旁边的 north/south/east/west/center)、I2C EEPROM、SysACE CompactFlash 槽以及 DDR SDRAM 控制器。

接下来,您将拥有 Ethernet MAC、1MB SRAM (256K x 32) 和 8MB 闪存 (2M x 32) 控制器。线性闪存控制器默认为禁用。

在最后的 I/O 配置对话框中,设置 BRAM 大小。默认值为 16KB。BRAM 是使用 FPGA 单元实现的芯片上内存。这种向设计中添加内存的方式代价很高。其好处是,如果您可以在芯片上拥有少量内存,就可能不再需要任何外部 RAM。

在下一个对话框中,配置哪些内存空间可缓存指令和数据。

接下来,选择标准调试进/出通道将通向何处(惟一选项为 “RS232_Uart” 或 “None”)以及是否希望 Base System Builder 向导创建两个样例应用程序。保持选中这两个样例;它们在开始时会很有用。

在下一个对话框中,可选择内存测试程序使用哪些内存片段来存储指令、数据和堆 —— 保持它们在 plb_bram_if_cntlr_1 中的默认值。

接下来,为外围测试程序做相同的选择。在 SRAM_256Kx32 中定位所有信息。

最后,单击 GenerateFinish

到现在,如果安装 Xilinx 软件时,您机器上已经有 Cygwin,您将遇到已困扰我一个星期的这个问题。那就是,当您尝试进行设计时,将会看见一条错误信息 “*** target pattern contains no `%'. Stop.” 。此问题已经在 Xilinx Web 站点列出(参见 参考资料),但那儿给出的答案实在不能令人满意。那里的解释是:问题的可能原因是 Xilinx 工具和 GNU make 3.81 及更高版本之间的不兼容性。Xilinx 的推荐工作区是更低的 3.79.1 版本,该版本通过 Xilinx 工具链安装。但这并非问题的全部,因为即使您从 gnu.org 下载 make 3.79.1 并进行了构建,结果的执行情况仍然会因为同样的原因而失败。Xilinx 目录中的 make.exe 版本是用 MinGW 而不是 Cygwin 构建的,所以在决定是否遵循 Xilinx 的工作区建议时,您应该警惕,因为该建议会要求您用 Xilinx 程序包中的较旧的 make.exe 版本重写现有的版本。此过程反过来是否会对 Cygwin 中运行的其他构建过程造成影响还不是很清楚; 我的系统看起来没什么问题,但您的可能会有所不同,尤其是当您的项目中使用极为复杂的 makefile 时就更为明显。

我认为其中一部分原因就是我之前重申多次的这个主张,即最好使用一台专门的 PC 来处理 FPGA 开发任务。

现在,您已经装配好第一个 EDK 项目,尽管尚未向其中放入任何有用的代码。下一篇文章将着手介绍启动处理器核心、编写一些实际的 PowerPC 代码并 处理一些 pin!

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球网站上的 英文原文
  • Spartan-3 Starter Board 可让您花费不到 100 美元就能开发相对复杂的 FPGA 应用程序。 但您不能在此芯片上实例化 PowerPC,且软件的价格也不包括在内。不过,您可以使用免费版本的 ISE 在此板上构建 和调试 Microblaze-cored 应用程序。请注意,没有 免费版本的 EDK。
  • 了解更多关于 XilinxML403 Evaluation Platform 的信息。
  • ML40x Known Issues 列出了已知的 ML403 正误表和问题;请在开始使用此板前进行阅读。
  • 这里列出了颇有些出人意料的 make.exe 在 ISE/EDK 中的不兼容性
  • 为获取可在 ML403 上运行的几种参考设计的直接下载链接,请参见 Xilinx ML403 Evaluation Platform Demos and Reference Designs
  • wget 是一个有用的 GNU 程序包,用于使用 HTTP、HTTPS 和 FTP 检索文件。
  • cygwinminGW 都可用于使 Windows 环境更像 UNIX®。cygwin 主要由 GPL 管理,minGW 主要位于公共领域 —— 注意“主要”一词在此是用来提醒您每种情况都会有一些组件是这种过度概括的例外。
  • 同步关注与 Power Architecture 相关的新闻: 订阅 IBM microNews

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=201116
ArticleTitle=Xilinx hijinx,第 1 部分: ML403 全新体验
publish-date=03092007