新闻中心

EEPW首页>嵌入式系统>设计应用> 手把手课堂:简单MicroBlaze微控制器的理念

手把手课堂:简单MicroBlaze微控制器的理念

作者: 时间:2011-05-06 来源:电子产品世界 收藏

  软件应用设计流程

本文引用地址://m.amcfsurvey.com/article/119296.htm

  单个软件描述文件 (smm.xml) 包含了启动应用开发工作所需的全部信息。开发可独立于FPGA设计流程进行,甚至在任何FPGA设计实施之前就能启动。

  从ISE 11.1开始,SDK作为独立选项提供,其包含完成软件应用设计所需的全部工具、驱动器、程序库以及实用程序等。

  图4显示了以软件定义文件开始的标准的SDK开发流程。的地址空间包括8KB的RAM与用户接口,在选择UART选项的情况下,还包括UART寄存器空间。

  您可用C或C++语言编写软件应用,并将其存储于Block RAM中。此外,RAM空间还可作为微控制器的ROM,因为它可被预载至FPGA比特流中的应用。用户在配置了FPGA并为微控制器复位解除断言后,应用就将开始从内部RAM/ROM空间执行。微控制器功能非常完整。

  调试选项支持应用的全源级调试,能提供存储器、寄存器以及变量的直观视图。用户能够在应用中设置断点,以更好地开展调试。设计人员可使用与FPGA配置相同的线缆进行调试。完成后就能清除调试选项,以缩小控制器的尺寸。

  设计示例

  我们不妨来看看一些赛灵思开发板的LCD控制器参考设计,这种设计综合采用了简单微控制器的各种特性。LCD控制器非常适用于小型微控制器实施,因为其硬件接口较慢,也比较简单,初始化序列较长,而且需要大量字符代码。

  通过综合采用HDL和C代码,设计可将消息输出至电路板上的字符LCD屏。HDL可处理硬件接口,而软件则负责初始化和控制LCD屏。

  LCD模块的时序较慢,但同时需要指令或数据之间的较大延迟。例如,清空显示的指令需要1.52毫秒的延迟,然后才能发出下一个指令或数据。部分指令需要40μs的延迟,其它的延迟则需要1μs。

  我们可在C语言代码中用while回路来处理延迟问题,不过这样做不够准确,而且还会影响编译器的优化。更好的选择

  是在FPGA中创建软件可载入的32位计数器,以便在到达编程的延迟时触发控制器中断。写入地址0x10,以根据用户接口数据总线上的数据启动定时器。随后将等待中断,以继续执行。

  MicroBlaze写入用户接口地址0x0会触发LCD控制器硬件接口,硬件接口的时序由HDL处理。用户接口数据总线可捕获指令或数据值。按钮输入能够连接至用户接口地址0x20。

  FPGA设计包括顶级模块、LCD硬件时序模块以及软件可寻址可编程定时器。此外,顶级文件还包括简单MicroBlaze 微控制器的示例,运行频率为66 MHz。

  C语言应用包含在单个文件中。该代码不仅可实现MicroBlaze中断、初始化LCD屏幕、管理不同的延迟情况、打印双线LCD、等待按钮输入,同时还可清空屏幕并输出新的消息。

  在Virtex-6 ML605电路板上,设计所用的FPGA资源还不足1%,并可为设计分区提供更加高效的方式。与仅采用HDL方案的实施和调试相比,C语言代码的编译和调试要快一个数量级。

  微控制器的定制

  由于微控制器采用MicroBlaze构建而成,因此设计人员将能获得许多标准的外设和选项,以定制嵌入式系统。用户可能希望部署不同的FPGA架构或添加更多主存储器、浮点单元或标准的SPI或I2C外设。

  定制既定的系统需要EDK。它包括众多作为嵌入式项目的不同配置,可根据用户要求进行修改。例如,如果需要16KB的存储器而不是标准的8KB存储器,那么用户可以打开EDK项目,修改MicroBlaze RAM空间并生成新的网表、Block RAM存储器和软件描述文件。用户随后即可将新的文件添加至ISE和SDK项目中。

  诚然,虽然简单的MicroBlaze微控制器不能满足所有嵌入式设计的需要,但对于需要简单微控制器来高效提供控制功能的用户来说确实是非常好的选择。此外,其还为希望共享和发布EDK设计的团队提供了一种定则,那就是无论嵌入式设计的尺寸大小,仅需三个文件就能完成整个实施工作。

c++相关文章:c++教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭