




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章软核处理器PicoBlaze原理与应用第一页,共110页。软核处理器PicoBlaze原理及应用-本章概述随着现场可编程门阵列功能不断增强,其应用范围扩展到了片上可编程系统领域(System-On-a-Programmable-Chip,SOPC),Xilinx公司的嵌入式解决方案以四类RISC结构的微处理器为核心,涵盖了系统硬件设计和软件调试的各个方面。四类嵌入式内核分别为:PicoBlaze、MicroBlaze、PowerPC、ARM,其中PicoBlaze和MicroBlaze是可裁剪的软核处理器,PowerPC和ARM为硬核处理器。第二页,共110页。软核处理器PicoBlaze原理及应用-本章概述本章以Xilinx公司8位微控制器PicoBlaze软核处理器为核心,介绍了基于FPGA的片上可编程系统的原理及实现方法。通过本章内容的学习,重点掌握片上可编程系统的本质,理解软件和硬件的协同设计的思想以及以软件为中心的系统设计方法。第三页,共110页。PicoBlaze的8位微控制器概述
--Xilinx片上可编程系统解决方案
Xilinx提供了基于以下嵌入式处理器的片上可编程系统解决方案。PicoBlaze8位嵌入式软核微控制器PowerPC405/PowerPC440嵌入式硬核处理器MicroBlaze32位嵌入式软核处理器ARM嵌入式硬核处理器(未来,预计今年底)第四页,共110页。片上可编程系统概论
-片上MCU和专用MCU的比较
这儿有很多8位的微控制器结构和指令集。现在的FPGA能高效的实现任何8位的微控制器,并且可以使用FPGA软核支持流行的指令集,比如PIC,8051,AVR,6502,8080和Z80微控制器。为什么使用PicoBlaze微控制器,而不使用更流行的指令集。PicoBlaze微控制器是专门为Sparan-3,Virtex-II和Virtex-IIProFPGA结构设计和优化。它紧凑而强大的结构,比可比较的流行的8位微控制器消耗更少的FPGA资源。而且,PicoBlaze微控制器提供了在FPGA内可用的免费,源码级的VHDL文件。第五页,共110页。片上可编程系统概论
-片上MCU和专用MCU的比较
一些独立的微控制器变种由于“过时”而导致“不好的名声”。由于PicoBlaze提供VHDL源码,这样PicoBlaze微控制器可以能未来的XilinxFPGA芯片上,使得该控制器对“过时”有更好的“免疫力”,并且可以进一步的降低成本和扩展特性。在PicoBlaze和MicoBlaze处理器出现前,微控制器存在于FPGA外部,和其它FPGA的功能进行连接,这样就限制了接口的整体性能。相比较之下,PicoBlaze微控制器充分的嵌入在FPGA内,可以灵活的,片上连接其它的FPGA资源。在FPGA内保留的信号提高了整体的性能。由于使用了集成在FPGA内的单片解决方案,PicoBlaze降低了系统的成本。第六页,共110页。片上可编程系统概论
-片上MCU和专用MCU的比较PicoBlaze微控制有高效的资源,因此,复杂的应用有时可以“分配”到多个PicoBlaze微控制器,其中的每个微控制器实现一个特定的功能,比如,键盘和显示控制,或者系统的管理。第七页,共110页。片上可编程系统概论
-片上MCU和片上逻辑的比较
在实际中,微控制器和FPGA成功的实现了任何数字逻辑功能。然而,在成本,性能和易用方面,它们有自己独特的优势。微控制器很好的适用于控制应用,特别是在较宽的变化要求方面。要求使用FPGA实现微控制器是相对固定的。相同的FPGA逻辑可以被各种微控制器指令“重用”。对程序存储器的要求随着复杂度的增加而增加。使用汇编代码对控制序列或者状态机编程比在FPGA逻辑内创建相同的结构要容易的很多。第八页,共110页。片上可编程系统概论
-片上MCU和片上逻辑的比较微控制器在性能方面受到限制。每个指令按顺序执行。当一个应用的复杂度增加后,要求实现应用的指令也会随着增加,系统性能就会相应的降低。相比较下,在一个FPGA内的性能是更加灵活的。比如,根据性能的要求一个算法可以顺序或者完全并行的实现。并行的实现速度会更快,但是会占用更多的逻辑资源。第九页,共110页。片上可编程系统概论
-片上MCU和片上逻辑的比较嵌入在FPGA内的微控制器提供了最好的解决方案。在FPGA内的微控制器实现非“苛刻”时序要求的复杂控制功能,可以用其它FPGA逻辑更好的实现“苛刻”时序或数据通道功能。比如,一个微控制器不能响应ms级内的事件,而FPGA逻辑在几十个ns时间内,能响应多个同步事件。反过来,一个微控制器在执行格式或者协议转换方面成本较低,并且比较简单。表10.1给出了PicoBlaze微控制器和FPGA逻辑在各方面进行比较的优势和缺点。第十页,共110页。片上可编程系统概论
-片上MCU和片上逻辑的比较第十一页,共110页。PicoBlaze的8位微控制器概述
--主要特点
Xilinx的PicoBlaze是一个8位RISC(精简指令集计算机)的微控制器,已经被专门设计和优化,用于Xilinx的Virtex和Spartan系列的FPGA和CoolRunner-IICPLD器件。
PicoBlaze比现有的8位的微控制器消耗的资源更少,并且提供了免费的、源码级的VHDL代码。第十二页,共110页。PicoBlaze的简单处理解决方案
--主要优点
1.免费的PicroBlaze核所得到的PicoBlaze微控制器是一个可综合的VHDL源代码。所以,该核可以移植到Xilinx的未来的产品上。
2.容易使用的汇编器
PicoBlaze的汇编器是一个简单的DOS程序,该汇编器编译程序时间小于3秒,产生VHDL,Verilog和M(用于SystemGenerator)文件。其它的开发工具包括图形化的集成开发环境IDE,图形化的指令集仿真器ISS,VHDL源代码和仿真模型。第十三页,共110页。PicoBlaze的简单处理解决方案
--主要优点
3.高性能
PicoBlaze每秒传递44-100million指令(取决于FPGA的类型和速度等级),比商业上可用的微控制器快好几倍。
4.较小的逻辑消耗
PicoBlaze消耗192个逻辑单元,比如大约消耗Spartan-3XC3S200器件5%的逻辑单元。由于只占用很小部分的FPGA和CPLD资源,工程师可以使用多个PicoBlaze用于处理更长的任务或者保持任务的隔离和可预测。第十四页,共110页。PicoBlaze的简单处理解决方案
--主要优点5.100%嵌入式能力
PicoBlaze核嵌在FPGA或CPLD内部,不需要外部的资源。通过将额外的逻辑和微控制器的输入和输入端口连接后,可扩展其基本功能。第十五页,共110页。PicoBlaze的一个实例
--KCPSM3结构原理图(可编程的状态机)第十六页,共110页。
PicoBlaze的一个实例
--KCPSM3内部详细结构程序空间
KCPSM3支持程序的指令可以到1024(使用一个BRAM),多个KCPSM3处理器可以用于处理不同的任务。16个通用寄存器
16个8位的通用寄存器,标号s0-sF(在汇编器中可能被重新命名)。所有的操作所使用的寄存器是非常灵活的(没有专用的或优先级)。在KCPSM3中没有累加器,任何一个寄存器都可作累加器。第十七页,共110页。PicoBlaze的一个实例
--KCPSM3内部详细结构ALU提供很多简单的操作,所有操作使用一个来自sX的操作数。结果返回到该寄存器。对需要两个操作数的操作,第二个操作数来自sY寄存器或8位常数kk。ADD和SUB操作可以包含进位标志作为一个输入(ADDCY和SUBCY),用于支持宽度大于8的算术操作;LOAD,AND,OR,XOR提供了位操作和测试功能,支持SHIFT和ROTATE操作;COMPARE和TEST指令可以测试寄存器的内容(不改变其内容),确定奇偶性PARITY;第十八页,共110页。PicoBlaze的一个实例
--KCPSM3内部详细结构标志和程序流控制
ALU的运算结果影响ZERO和CARRY标志位。CARRY也可以用于捕获在移位和旋转指令操作时,位移出寄存器的操作。在TEST指令,CARRY标志也用来标识,是否8位的暂时结果是ODDPARITY(奇校验)。这个标志也用来确定程序的执行序列。JUMP跳转到程序空间的绝对地址,CALL和RETURN提供了自程序功能(代码段)。堆栈支持31个嵌套的子程序级。第十九页,共110页。PicoBlaze的一个实例
--KCPSM3内部详细结构复位处理器返回到初始状态。程序从000开始,禁止中断,状态标志和CALL/RETURN栈复位。不影响寄存器内容。输入/输出支持最多256个输入和256个输出端口。使用PORT_ID访问8位的地址端口。端口值可以在程序中用用绝对值pp来指定,或者用16寄存器的任何一个((sY))来指定。第二十页,共110页。PicoBlaze的一个实例
--KCPSM3内部详细结构
INPUT操作,将端口值送到任何一个寄存器中,输入操作用一个READ_STROBE脉冲标识(不总是需的),但可以指示数据被处理器接收到。OUTPUT操作,将任何一个寄存器送到端口值中,输出操作用一个WRITE_STROBE脉冲标识,该信号被接口逻辑用来保证有效的数据被送到外部的系统。典型的,WRITE_STROBE用于时钟的使能或写使能。第二十一页,共110页。PicoBlaze的一个实例
--KCPSM3内部详细结构内嵌存储器有一个内部的64字节的通用存储器,可以使用STORE指令将16个寄存器中的任意一个寄存器的内容写入64个地址位置中,FETCH指令将存储器中任一个位置的内容写入到16个寄存器中的任意一个寄存器中。这允许在处理器边界内可以保持有更多的变量,也用于保留所有的I/O空间用于输入和输出信号。第二十二页,共110页。PicoBlaze的一个实例
--KCPSM3内部详细结构处理器提供单独的INTERRUPT信号,如果需要,可以使用一个简单的逻辑连接多个信号。默认禁止中断,在程序中可以使能/禁止中断。活动的中断,使KCPSM3初始化“CALL3FF”(一个子程序调用最后的存储器位置),这里定义了用户定义的跳转向量到中断服务程序ISR。
INTERRUPT_ACK输出产生脉冲。ZERO和CARRY自动的被保护,禁止其它中断。“RETURNI”指令保证ISR的结束,回复状态标志,并说明使能/禁止未来的中断。中断第二十三页,共110页。
PicoBlaze的一个实例
--KCPSM3结构连接符号第二十四页,共110页。PicoBlaze的一个实例
--KCPSM3结构连接符号VHDL描述第二十五页,共110页。
PicoBlaze的一个实例
--KCPSM3与程序ROM连接VHDL描述
注:程序ROM的名字取决于用户程序的名字,比如如果程序文件叫“phone.psm”,汇编器将产生程序ROM的定义文件叫“phone.vhd”。第二十六页,共110页。PicoBlaze指令集(需要2个周期)
--程序控制组RETURNRETURNZRETURNNZRETURNCRETURNNCJUMPaaaJUMPZ,aaaJUMPNZ,aaaJUMPC,aaaJUMPNC,aaaCALLaaaCALLZ,aaaCALLNZ,aaaCALLC,aaaCALLNC,aaa第二十七页,共110页。PicoBlaze指令集(需要2个周期)
--逻辑组--算术运算组
LOADsX,kkANDsX,kkORsX,kkXORsX,kkTESTsX,kkLOADsX,sYANDsX,sYORsX,sYXORsX,sYTESTsX,sYADDsX,kkADDCYsX,kkSUBsX,kkSUBCYsX,kkCOMPAREsX,kkADDsX,sYADDCYsX,sYSUBsX,sYSUBCYsX,SyCOMPAREsX,sY第二十八页,共110页。PicoBlaze指令集(需要2个周期)
--中断组--存储组RETURNIENABLERETURNIDISABLEENABLEINTERRUPTDISABLEINTERRUPTSTOREsX,ssSTOREsX,(sY)FETCHsX,ssFETCHsX,(sY)第二十九页,共110页。PicoBlaze指令集(需要2个周期)
--移位和旋转组--输入/输出组SR0sXSR1sXSRXsXSRAsXRRsXSL0sXSL1sXSLXsXSLAsXRLsXINPUTsX,ppINPUTsX,(sY)OUTPUTsX,ppOUTPUTsX,(sY)第三十页,共110页。PicoBlaze指令集详解
--JUMP第三十一页,共110页。PicoBlaze指令集详解
--CALL第三十二页,共110页。PicoBlaze指令集详解
--RETURN第三十三页,共110页。PicoBlaze指令集详解
--RETURNI第三十四页,共110页。PicoBlaze指令集详解
--LOAD第三十五页,共110页。PicoBlaze指令集详解
--AND第三十六页,共110页。PicoBlaze指令集详解
--TEST第三十七页,共110页。PicoBlaze指令集详解
--ADDCY第三十八页,共110页。PicoBlaze指令集详解
--COMPARE第三十九页,共110页。PicoBlaze指令集详解
--SR0,SR1,SRX,SRA,RR第四十页,共110页。PicoBlaze指令集详解
--SL0,SL1,SLX,SLA,RL第四十一页,共110页。PicoBlaze指令集详解
--INPUT/OUTPUT第四十二页,共110页。PicoBlaze指令集详解
--INPUT/OUTPUT时序第四十三页,共110页。PicoBlaze指令集详解
--RESET第四十四页,共110页。PicoBlaze指令集详解
--STORE第四十五页,共110页。PicoBlaze指令集详解
--FETCH第四十六页,共110页。KCPSM3汇编器
--原理及操作KCPSM3汇编器提供一个简单的DOS可执行文件和三个模版文件,将KCPSM3.EXE,ROM_form.vhd,ROM_form.v和ROM_form.coe文件复制到工作目录下。程序可用标准的Notepad和Wordpad工具编写,文件扩展名为.psm(8字符名字限制)。打开一个DOS对话框,并定位到当前的工作路径下。然后运行汇编器“kcpsm3<>[.psm]”来汇编所编写的程序(运行速度很快)。
第四十七页,共110页。KCPSM3汇编器
--原理及操作第四十八页,共110页。KCPSM3汇编器
--错误处理
当遇到错误时,汇编器将停下来。将显示一个短消息来帮助判断引起错误的原因。汇编器将显示遇到问题的行。设计者然后修改错误重新运行汇编器程序。第四十九页,共110页。KCPSM3汇编器
--文件组成
KCPSM3汇编器使用4个输入文件,产生15个输出文件。下面给出详细的说明。第五十页,共110页。KCPSM3汇编器
--ROM_form.vhd
该文件提供模版,该模版用于汇编器产生的VHDL文件,和汇编器一起提供,在工作路径下。该文件为Spartan-3,Virtex-II,Virtex-IIPro的单端口BRAM配置为ROM.下面给出该文件的模版。第五十一页,共110页。KCPSM3汇编器
--ROM_form.vhd
汇编器读取ROM_form.vhd模版,将其信息复制到输出文件<>.vhd。不进行其语法的检查。该文件包含一些特殊的文本串,包含{}。AttributeAttributeNameofObjectList:ObjectTypeisAttributeValue;
汇编器使用{begintemplate}来标识VHDL定义开始的地方,然后理解和使用合适的信息来替换所有其它特殊的串。{name}被输入程序“.psm”的名字替换。第五十二页,共110页。KCPSM3汇编器
--ROM_form.coe
该文件为汇编器生成的系数文件的提供模版,该文件和汇编程序一起提供,并且同在一个工作目录下。
ROM_form.coe模版文件为Spartan-3,Virtex-II和其它FPGA定义了一个双端口存储器。汇编器读取ROM_form.coe模版,将其信息复制到输出文件<>.vhd。不进行其语法的检查。
{name}被输入程序“.psm”的名字替换。文件的最后一行关键字
memory_initialization_vector=
将要被核生成器标识后面的数据值。汇编器将添加1024个所要求的值。第五十三页,共110页。KCPSM3汇编器
--ROM_form.coe第五十四页,共110页。KCPSM3汇编器
--<>.fmt文件
该文件是对原始的.psm文件的格式化,使源文件看上去更好看。下面给出该文件。第五十五页,共110页。KCPSM3汇编器
--<>.log文件
该文件提供了汇编器执行过程中的详细信息。第五十六页,共110页。KCPSM3汇编器
--constant.txt文件和labels.txt文件
这两个文件提供了行标号的列表和它相关的地址,以及常数的列表和值。第五十七页,共110页。KCPSM3汇编器
--pass.dat文件
pass.dat文件是汇编器的内部文件,用来表示汇编过程中的中间步骤。这些文件可不去理会,但能帮助识别汇编器如何理解(翻译)程序的。当开始汇编时,这些文件自动删除。第五十八页,共110页。KCPSM3编程语法
--简单的规则
1)没有空行-空行将被汇编器自动去除,如果保持一行用一个空的注释(用分号“;”)
2)注释-用分号“;”开始,汇编器忽略注释。
3)寄存器-所有寄存器必须用“s”定义,后面跟16进制数0-F。汇编器接受大小写的混合输入,但是将其转换为“sX”格式。
4)常数-常数用两个16进制数表示,范围“00”-“FF”,汇编器接受大小写的混合输入,但是将其转换为大写。
5)标号-标号是用户定义的字符串,区分大小写。中间不能有空格,支持下划线“_”。第五十九页,共110页。KCPSM3编程语法
--简单的规则
6)行标号-用来标识一个程序行,用于JUMP和CALL指令的参考,行标号后面跟一个冒号“:”。第六十页,共110页。KCPSM3编程语法
--简单的规则
7)汇编器允许使用空格和<TAB>字符,但是指令和第一个操作数之间必须至少有一个空格。带有两个操作数的指令,其两个操作数之间必须用“,”分割符。
8)汇编器接受大小写混合编程,但是自动的将其转化为大写。第六十一页,共110页。KCPSM3编程语法
--简单的规则第六十二页,共110页。KCPSM3编程语法
--常数指令
常数是全局的,即使常数在程序的末尾定义,它也能在程序的任何地方被使用。第六十三页,共110页。KCPSM3编程语法
--NAMEREG指令第六十四页,共110页。KCPSM3编程语法
--ADDRESS指令LOG文件给出的描述。
ADDRESS强迫指令在给定地址执行。第六十五页,共110页。KCPSM3中断处理
--中断使能
使用ENABLEINTERRUPT指令来使能中断。当不允许中断时,使用DISABLEINTERRUPT来禁止中断。使用RETURNIENABLE/DISABLE指令来从中断返回主程序。当中断产生时,进行下面的步骤:
1)将程序计数器入栈,保护CARRY和ZERO标志;
2)禁止中断输入;
3)程序计数器的值为“3FF”。第六十六页,共110页。KCPSM3中断处理
--中断处理过程第六十七页,共110页。KCPSM3中断处理
--中断处理基本方法
当中断时,PC跳到“3FF”,所以必须保证在此位置有一个跳转到正确的中断服务程序的跳转向量。没有JUMP指令,程序将转向“00”。中断服务程序可以放在程序的任何位置。ISR执行所要求的任务,用RETURNI结束。第六十八页,共110页。KCPSM3中断处理
--中断处理基本方法
下面给出一个简单的中断的处理例程
通过向端口写55和AA到waveform_port端口来产生波形。通过对S0寄存器递减来以固定的间隔来写数值。响应中断后,PicoBlaze停止产生波形,然后对sA寄存器递增,将计数器的值写到counter_port。第六十九页,共110页。KCPSM3中断处理
--VHDL设计例子第七十页,共110页。KCPSM3中断处理
--中断服务程序
;Interruptexample;CONSTANTwaveform_port,02;bit0willbedataCONSTANTcounter_port,04CONSTANTpattern_10101010,AANAMEREGsA,interrupt_counter;start:LOADinterrupt_counter,00;resetinterruptcounterLOADs2,pattern_10101010;initialoutputconditionENABLEINTERRUPT;drive_wave:OUTPUTs2,waveform_portLOADs0,07;delaysizeloop:SUBs0,01;delayloopJUMPNZ,loopXORs2,FF;togglewaveformJUMPdrive_wave;ADDRESS2B0int_routine:ADDinterrupt_counter,01;incrementcounterOUTPUTinterrupt_counter,counter_portRETURNIENABLE;ADDRESS3FF;setinterruptvectorJUMPint_routine第七十一页,共110页。KCPSM3中断处理
--ISR中断服务程序第七十二页,共110页。KCPSM3中断处理
--中断所执行的操作第七十三页,共110页。KCPSM3中断处理
--中断脉冲的时序
建议中断信号保持至少2个KCPSM上升沿时钟周期第七十四页,共110页。KCPSM3CALL/RETURN栈
--调用和返回处理过程
PicoBlaze包含一个自动的嵌入式的堆栈,用来当遇到CALL指令时保存PC的值,在遇到RETURN(I)是恢复PC的值。堆栈不需要初始化(或者用户的控制)。然而堆栈只支持到最多31级的嵌套的子程序。下面给出一个例子来说明这个问题。第七十五页,共110页。KCPSM3CALL/RETURN栈
--调用和返回处理过程第七十六页,共110页。KCPSM3共享程序空间
--一个奇妙的想法
为了设计容易和满足系统的性能要求,经常需要在一个可编程芯片内使用多个KCPSM3宏。在SPARTAN-3或者Virtex-II芯片内使用一个BRAM来提供1024个地址空间。下面给出多个KCPSM3共享程序空间的方法。第七十七页,共110页。KCPSM3共享程序空间
--一个奇妙的想法第七十八页,共110页。KCPSM3输出端口的设计
--简单输出端口
对于少于8个输出的端口可以尝试分配”one-hot”地址,然后确保只解码正确的PORT_ID信号。这省去大量的逻辑和地址解码。同时,降低了PORT_ID总线上的负载。在程序中使用CONSTANT指令使代码可读,并且确保使用了正确的端口。第七十九页,共110页。KCPSM3输出端口的设计
--简单输出端口第八十页,共110页。KCPSM3输出端口的设计
--带解码和高性能的输出端口第八十一页,共110页。KCPSM3输入端口的设计
--简单输入端口
对于少于8个的简单输入端口,使用多路复用开关将其接入输入端口。建议检查综合的结果,以确保特殊的MUXF5和MUXF6被用来构成高效的多路复用结构。在程序中使用CONSTANT来定义多路开关。
由于PORT_ID保持有效2个周期,因此在多路复用器后加入寄存器来保持其性能。第八十二页,共110页。KCPSM3输入端口的设计
--复杂输入端口
有时候,一个提供数据到KCPSM3电路,以知道数据已经被读取。一个典型的例子是使用FIFO缓冲区,可以准备下一个被读取的数据。下面给出其结构和时序图。第八十三页,共110页。KCPSM3输入端口的设计
--复杂输入端口FIFO时序第八十四页,共110页。KCPSM3和存储器的连接
--提高性能的设计方法
与存储器的连接是最容易降低系统性能的原因。插入并行的寄存器,分割输入多路复用器,认真的分配端口地址,这些都是提高系统系统的方法。第八十五页,共110页。KCPSM3和存储器的连接
--提高性能的设计方法第八十六页,共110页。基于PicoBlaze处理器PWM控制
--系统性能的功能要求和结构
该设计将使用PicoBlaze片上8位软核处理器实现对脉冲宽度调制的控制。作为应用该设计允许控制12个PWM通道;8个通道控制板上的LED的闪烁,剩余的4个通道通过插针引出后可用示波器观察。可以在插针外接一个简单的电阻-电容(RC)网络平滑电路生成一个数字到模拟转换通道(D/A通道)。PWM的脉冲重复频率PRF为1KHz和8位的分辨率(256步)。每个PWM都能通过PC机上的超级终端(HyperTerminal)软件工具独立的设置(通过PC机的RS232串口实现命令的传输)。串口参数设置波特率:9600;数据位:8位;无奇偶校验;无流量控制。第八十七页,共110页。基于PicoBlaze处理器PWM控制--系统结构第八十八页,共110页。基于PicoBlaze处理器PWM控制--系统结构picoblaze_pwm_control.vhd:顶层文件,用于描述整个硬件系统;kcpsm3.vhd:PicoBlaze处理器的完整描述文件;pwm_ctrl.vhd:用于picoBlaze的汇编后的程序(保存在块存储器中),picoBlaze程序源文件汇编代码;第八十九页,共110页。基于PicoBlaze处理器PWM控制--系统结构uart_tx.vhd:带有16个字节FIFO缓冲区的UART发送器模块;kc_uart_tx.vhd:UART的发送状态机模块,数据的协议转换,将处理器端口上8位并行数据,转换成RS-232串行发送数据;bbfifo_16x8.vhd:16个字节FIFO缓冲区;第九十页,共110页。基于PicoBlaze处理器PWM控制--系统结构uart_rx.vhd:带有16个字节FIFO缓冲区的UART接收器模块;kc_uart_rx.vhd:UART的接收状态机模块,数据协议转换,将接收到的RS-232串行接收数据转换成处理器端口上需要的8位并行数据;bbfifo_16x8.vhd:16个字节FIFO缓冲区;第九十一页,共110页。基于PicoBlaze处理器PWM控制--系统结构第九十二页,共110页。基于PicoBlaze处理器PWM控制
-系统PWM的产生原理
该设计通过使用PicoBlaze上执行软件产生PWM,而不是使用PicoBlaze和PWM硬件外设产生。可就是说软件动态的产生PWM更加灵活,但是对实现也有一些限制。8位分辨率=256步1ms/256=3.90625usPRF=1kHz(1/1000=1ms)如图14.69所示,PWM关键的参数有两个:脉冲重复频率(PulseRepetitionFrequency,PRF)和分辨率(步数,用于设置每个脉冲的占空比),该设计中的fPRF=1kHz,分辨率为8位(256步)。第九十三页,共110页。基于PicoBlaze处理器PWM控制
-系统PWM的产生原理第九十四页,共110页。基于PicoBlaze处理器PWM控制
-系统PWM的产生原理PicoBlaze使用2个时钟周期来执行每条执行,该设计中其参考时钟为50MHz,所以PicoBlaze的性能为25百万条指令/秒(millioninstructionspersecond,MIPS),即执行一条执行需要40ns。尽管这对于一个8位单片机来说是很快了,但是它执行97条指令需要3.90625us步长间隔支持上面的参数。然而,97条指令用来驱动12通道PWM信号已经足够了,处理器的50%的带宽仍然可以用于高级的控制任务(处理与UART和处理文本命令)。第九十五页,共110页。基于PicoBlaze处理器PWM控制
-系统PWM的产生原理该设计中产生连续的PWM。,通过软件产生脉冲实现PWM,这是常用的软件方法,这样是为了有时间执行其它的处理任务。注意,当使用高性能的PicoBlaze和包含硬件外设时,不需要这种折衷。第九十六页,共110页。基于PicoBlaze处理器PWM控制
-系统PWM的产生原理该设计中,目标是提供一个精确的PRF和占空分辨率。这个要求可以通过中断实现。如图14.70所示,这个设计使用一个硬件的计数器设置中断时序。计数器有196个状态,并且产生中断脉冲。等于中断的周期为3.92us,PRF为996.5Hz。图14.70中断产生原理第九十七页,共110页。基于PicoBlaze
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游泳救生员初级测试题与答案
- 推拿治疗学测试题+答案
- 业务学习心得体会范文
- 医美服装采购合同范本
- 下半年人力资源部工作计划
- 三年级数学综合实践课教案
- 中药炮制工中级练习题(含答案)
- 办公别墅 出租合同范本
- 建筑信息模型职业技能理论知识试题库及参考答案
- 工程地质与土力学练习题(含答案)
- 有机化学(高占先)习题答案
- 中国化学家侯德榜市公开课获奖课件
- 2022年人教部编版三年级下册道德与法治全册教案
- 支气管镜室工作制度
- 紫精丹_圣惠卷九十五_方剂加减变化汇总
- 天蓝色商务发展历程时间轴PPT模板课件
- 第5章液相传质步骤动力学
- GJB 国军标标准对应名称解析
- 2019版人教版新课标高中英语必修1第一册单词表
- [考研英语]商志英语作文模板
- 小学交通安全主题班会:《一盔一带 安全出行》
评论
0/150
提交评论