充分发挥PicoBlaze微控制器的优势
时间:01-12
来源:互联网
点击:
开发流程
创建首个PicoBlaze 实例其实很简单。第一步,使用Notepad++ 之类的编辑器创建一个空白的文本文件。该文件应该具备一个 .PSM 的文件扩展名,比如像“test.psm”这样的。您可以用PicoBlaze 汇编程序对微控制器进行编程。
赛灵思在All_kcpsm6_ syntax.psm 文件中对该语法进行了详细介绍,您可以自行下载。无论怎样,这个语法很容易理解和掌握。图2 是汇编程序代码片段的示例,这是一个简单程序,用以闪存运行频率为2Hz、时钟频率为 40MHz 的LED。
图2 – 用于项目闪存LED的汇编程序代码片段
一旦您对自己的汇编程序感到满意后,就可以进行下一步:通过您下载的汇编程序可执行文件运行该程序。这样将会生成一个存储器文件 (您的FPGA 中会用到的VHDL)、一个日志文件和一个十六进制文件,我们将在后文介绍它们的用途。图3 显示了针对上述代码片段所运行的汇编程序流程。一旦运行汇编程序,您现在就能够在您的FPGA 内实例化PicoBlaze。
图3 –使用KCPSM6汇编程序生成存储器文件
您现在拥有两个所需的VHDL文件:KCPSM6.vhd 和由汇编程序创建的包含您的应用的VHDL 文件( 在本例中为test.vhd)。第二步:
在您的VHDL 设计中声明两个组件(KCPSM6 和Memory) 并对他们进行实例化(如图4 所示)。在图5 所示的代码片段中可以看到这个简单的VHDL 示例。这个VHDL 示例实现的PicoBlaz 可以将LED 闪存到LX9Spartan® 开发板上。
图4 – PicoBlaze上下文方框图
图5 –将LED闪存到LX9 Spartan开发板上的PicoBlaze的代码片段
仿真与验证
一旦您在应用中完成了设计文件的实例化,您肯定希望能在综合和实现之前在仿真环境中验证一下该系统或模块的性能。由于PicoBlaze 使用的是逻辑Slice 和 Block RAM,所以您在Mentor Graphics 的Mod-elSim 或赛灵思ISE 中的ISim ( 如果您是在
Vivado® 设计套件中的Xsim 中实现您的PicoBlaze,也可使用Xsim) 等程序中进行仿真就极其简单。
由于Block RAM 包含有针对您程序的指令,所以仿真工作自然就简单。基本上,您只需要提供一个时钟以及实例化要求的其他输入输出。图6 显示了在ISim 中进行的PicoBlaze仿真结果,以及指令加载之间的两个时钟周期。
图6 – ISim仿真结果
图6 – ISim仿真结果
升级您的程序
在FPGA( 以及比特文件) 中内置PicoBlaze 的最大优势之一就是在FPGA 配置完成后PicoBlaze 开始直接在其RAM 中运行程序。然而,在某些情况下,您可能需要修改该处理器核正在执行的程序。虽然根据设计余下部分的复杂程度,您可能会重新运行Implementation 阶段(包括更新了的存储器文件),但这会非常耗时,尤其是您只在实验室里尝试各种可能的情况下。因此,在重新运行Implementation 阶段之前可以用JTAGloader 更新处理器 核的程序存储器,来调试你的软件程序。其中JTAG loader 也能通过下载获得。
在使用JTAG loader 之前,首先需要在您的设计设置中启用该加载程序。在一个程序存储器的实例化中使用通用C_JTAG_LOAD-ER_ENABLE: integer := 1 。注意您一次只能为您设计中的一个内存实例设置该参数。
在您的设计中启用该程序后,您必须从JTAG_loader 目录中选择和你的操作系统匹配的版本并将其复制到您的工作目录下 ( 即十六进制文件所在位置)。现在您可以打开一个命令窗口并导航到您的工作目录下,然后使用以下命令。
jtagloader –l <Your Project Name>.hex
注意:我已经我的操作系统重新命名为可执行文件版本,即jtagloader.exe。
当您在您的最新PSM 文件上运行汇编程序时,此项操作将下载所创建的十六进制文件,结果如图7 所示。下载该文件后,您将注意到JTAGloader 会停止处理器执行并在释放处理器复位之前下载新的程序到存储器中,此时处理器开始运行新的程序。
一旦您对PSM 文件的更新行为感到满意,您就可以重新运行实现方案和比特文件生成,从而确保下次该器件经过配置,能够执行更新的程序。
创建首个PicoBlaze 实例其实很简单。第一步,使用Notepad++ 之类的编辑器创建一个空白的文本文件。该文件应该具备一个 .PSM 的文件扩展名,比如像“test.psm”这样的。您可以用PicoBlaze 汇编程序对微控制器进行编程。
赛灵思在All_kcpsm6_ syntax.psm 文件中对该语法进行了详细介绍,您可以自行下载。无论怎样,这个语法很容易理解和掌握。图2 是汇编程序代码片段的示例,这是一个简单程序,用以闪存运行频率为2Hz、时钟频率为 40MHz 的LED。
图2 – 用于项目闪存LED的汇编程序代码片段
一旦您对自己的汇编程序感到满意后,就可以进行下一步:通过您下载的汇编程序可执行文件运行该程序。这样将会生成一个存储器文件 (您的FPGA 中会用到的VHDL)、一个日志文件和一个十六进制文件,我们将在后文介绍它们的用途。图3 显示了针对上述代码片段所运行的汇编程序流程。一旦运行汇编程序,您现在就能够在您的FPGA 内实例化PicoBlaze。
图3 –使用KCPSM6汇编程序生成存储器文件
您现在拥有两个所需的VHDL文件:KCPSM6.vhd 和由汇编程序创建的包含您的应用的VHDL 文件( 在本例中为test.vhd)。第二步:
在您的VHDL 设计中声明两个组件(KCPSM6 和Memory) 并对他们进行实例化(如图4 所示)。在图5 所示的代码片段中可以看到这个简单的VHDL 示例。这个VHDL 示例实现的PicoBlaz 可以将LED 闪存到LX9Spartan® 开发板上。
图4 – PicoBlaze上下文方框图
图5 –将LED闪存到LX9 Spartan开发板上的PicoBlaze的代码片段
仿真与验证
一旦您在应用中完成了设计文件的实例化,您肯定希望能在综合和实现之前在仿真环境中验证一下该系统或模块的性能。由于PicoBlaze 使用的是逻辑Slice 和 Block RAM,所以您在Mentor Graphics 的Mod-elSim 或赛灵思ISE 中的ISim ( 如果您是在
Vivado® 设计套件中的Xsim 中实现您的PicoBlaze,也可使用Xsim) 等程序中进行仿真就极其简单。
由于Block RAM 包含有针对您程序的指令,所以仿真工作自然就简单。基本上,您只需要提供一个时钟以及实例化要求的其他输入输出。图6 显示了在ISim 中进行的PicoBlaze仿真结果,以及指令加载之间的两个时钟周期。
图6 – ISim仿真结果
图6 – ISim仿真结果
升级您的程序
在FPGA( 以及比特文件) 中内置PicoBlaze 的最大优势之一就是在FPGA 配置完成后PicoBlaze 开始直接在其RAM 中运行程序。然而,在某些情况下,您可能需要修改该处理器核正在执行的程序。虽然根据设计余下部分的复杂程度,您可能会重新运行Implementation 阶段(包括更新了的存储器文件),但这会非常耗时,尤其是您只在实验室里尝试各种可能的情况下。因此,在重新运行Implementation 阶段之前可以用JTAGloader 更新处理器 核的程序存储器,来调试你的软件程序。其中JTAG loader 也能通过下载获得。
在使用JTAG loader 之前,首先需要在您的设计设置中启用该加载程序。在一个程序存储器的实例化中使用通用C_JTAG_LOAD-ER_ENABLE: integer := 1 。注意您一次只能为您设计中的一个内存实例设置该参数。
在您的设计中启用该程序后,您必须从JTAG_loader 目录中选择和你的操作系统匹配的版本并将其复制到您的工作目录下 ( 即十六进制文件所在位置)。现在您可以打开一个命令窗口并导航到您的工作目录下,然后使用以下命令。
jtagloader –l <Your Project Name>.hex
注意:我已经我的操作系统重新命名为可执行文件版本,即jtagloader.exe。
当您在您的最新PSM 文件上运行汇编程序时,此项操作将下载所创建的十六进制文件,结果如图7 所示。下载该文件后,您将注意到JTAGloader 会停止处理器执行并在释放处理器复位之前下载新的程序到存储器中,此时处理器开始运行新的程序。
一旦您对PSM 文件的更新行为感到满意,您就可以重新运行实现方案和比特文件生成,从而确保下次该器件经过配置,能够执行更新的程序。
FPGA 赛灵思 PIC DAC VHDL LED 仿真 Mentor 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)