Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc

Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc

ID:27460167

大小:83.50 KB

页数:5页

时间:2018-12-04

Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc_第1页
Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc_第2页
Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc_第3页
Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc_第4页
Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc_第5页
资源描述:

《Adam Taylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、AdamTaylor玩转MicroZed系列之57:Zynq和PicoBlaze第二部分  到现在为止,我们知道如何在基于ZynqSoC的系统中例化PicoBlaze软核处理器。在这篇博客,我们将继续探索更多关于如何生成PicoBlaze程序以及如何使用JTAG接口更新程序而不是重新编译整个设计。  显然,第一步我们要做的就是编写汇编程序实现我们要求的功能,我们可以使用PicoBlaze或者更高级的IDE如fidex()来编写程序。  这个汇编文件的后缀是.psm,PicoBlaze处理器使用PicoBlaze汇编器进行编译

2、,关于PicoBlaze汇编语法详细请看下载包内的UG129和All_kcpsm6_syntax.psm文件。这个语法非常简单易懂。  我们上周做的LED闪烁的例子使用的是下面的代码,该例子中PicoBlaze处理器主频是40MHz,IO负载板的4个闪烁的LED闪烁频率是2HZ。我们通过一个向下计数的计数器来完成闪烁速率,先设一个预置的计数值,当递减到0时使LED状态翻转。  由于PicoBlaze指令执行需要两个周期,所以我们先计算好预设值:1.5s/50ns=10,000,000cycles  然而,看看下面的代码在循环

3、延迟这里有五个指令需要执行,因此我们将上面计算的值除以5,于是得到一个常量等于2,000,000(十六进制为1E8480)。  这就是最终在PicoBlaze上跑的LED闪烁程序代码  NAMEREGs0,led;renameS0registertoled;As8bitprocessorweneedfourdelayloops256*256*256*256=4294967296CONSTANTmax1,80;setdelayCONSTANTmax2,84;setdelayCONSTANTmax3,1e;setdelayCON

4、STANTmax4,00;setdelaymain:LOADled,00;loadtheledoutputregisterwith00flash:XORled,FF;xorthevalueinledregisterwithFFi.e.toggleOUTPUTled,01;outputledregisterwithportIDof1CALLdelay_init;startdelayJUMPflash;loopbacktobeginningdelay_init:LOADs4,max4;LOADs3,max3;LOADs2,max

5、2;LOADs1,max1;delay_loop:SUBs1,1’d;subtract1decimalfroms1SUBCYs2,0’d;carrysubtracTIonSUBCYs3,0’d;carrysubtracTIonSUBCYs4,0’d;carrysubtracTIonJUMPNZ,delay_loop;RETURN  下一步就是使用下载包中的汇编器对源代码进行编译来生成一个存储文件(上周我们使用的FPGA用的是VHDL语言),一个日志文件,一个十六进制文件(.hex)。  写完这程序,我们打开上周的设计,并将其

6、例化。尽管在联合测试时,如果我们需要改变程序的内容,其中一种方法就是使用JTAG下载器来烧录。JTAG下载器可以通过JTAG接口让我们修改PicoBlaze处理器的RAM内容。然后我们可以测试这个更新的程序在我们重新编译FPGA配置之前,使用这个更新的程序,以至它可以再RAM中自动的运行。  我们使用这个JTAG下载器只能对应一个PicoBlaze,如果一个设计有几个PicoBlaze(理论上是可行的),我们需要确保只有一个处理器使用JTAG下载器。我们通过在例化PicoBlze时将Generic进行如下设置来实现:    

7、设置完JTAG下载器后,仅对应我们PicoBlaze中的一个,我们然后使用JTAG下载器来烧录我们编译好的hex文件。  过程非常简单。首先根据你使用的操作系统从你下载的JTAG_loader文件夹选择正确的版本并拷贝到你的工作文件夹(你的hex所在的地方)。完成这步之后,你可以打开一个命令窗口然后定位到你的工作目录,并且使用下面的命令:jtagloader–l.hex  注意,我已经为我操作系统对应的jtagloader.exe的版本进行了重命名。  随着下载,你将看到JTAG下载器暂停了这个处理器的工作,并且在使处理器复

8、位之前下载新的程序到内存,随后,你的新程序重新开始运行。    尽管这是一个非常强大的工具,它允许您下载并验证程序的修改,但不幸的是。它确实有几个缺陷。比如,下一次你将这个板子上电的时候,还是执行原来的程序,而不是更新的那个,同时,在没有生成新的FPGA配置位流之前,你只能更新一个例化的P

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。