1 导言
在现在的快速嵌入式体系规划中,现在比较盛行的计划是在FPGA内集成应用软件或是软IP渠道,以简化工序、加快产品面市日程。为此,许多公司推出了自己的开发渠道以及相关CPU的IP核,常见的为两种:一种是通用型CPU,如xilinx和altera公司的32位以及64位通用CPU核;还有便是专用型的,常见的为51系列单片机的CPU核,可是现在关于单片机的软核基本上都是8051的,其他的种类很少。并且8051的速度不是很快,在有些快速的操控场合(如运用单片机来作为usb2.0的操控部件)显得速度缺乏,比较闻名的actel公司推出的Core8051,运转频率也只在40 MHz左右。本文介绍了一个十分高速DS80C320单片机软核的规划。
DS80C320单片机是DALLAS公司推出的一款依据51结构的高性能单片机。
它有如下一些长处:
ⅰ,具有与51系列彻底一致的指令体系,能充沛兼容一切依据51系列开发的程序;
ⅱ,具有比8051愈加彻底的外设。比较8051单片机,DS80C320增加了定时器2以及一个增强型串口等;
ⅲ,具有比8051更好的功率;DS80C320的一个指令周期是4个CLK,8051则是12个,这个差异尤其是在处理简略指令的时分优势显着,例如单周期指令的处理,DS80C320只需求4个CLK,而8051需求12个,据DALLAS公司的核算标明,在相一起钟频率下,DS80C320每条指令的履行速度是8051的1.5~3倍,关于典型的应用程序来说,履行速度也是8051的2.5倍左右。
ⅳ,其读取指令的方法比8051愈加合适IP核的特色;将单片机内部ROM去掉,彻底从外部读取指令,这种特色作为软核是很合适的,首要是结构简略,有利于指令读取的流水规划,其次能够打破内部ROM巨细的约束,最终,作为FPGA规划的特色,即便8051的规划,内部ROM块也是放在FPGA芯片的ROM资源里边,与其这样,还不如直接放到外面愈加简化时序与结构;
2 整体结构区别
如图所示为DS80C320软核的整体功用图:
图1 DS80C320功用框图
本IP核的规划首要依照指令履行的流程来组织功用块,并经过数据总线来传递数据;虚线里边的为CPU中心;首要是ROM模块,DS80C320并没有内部ROM,所以该模块功用首要是剖析从P端口读取过来的指令,并经过查找指令的长度以及周期数目,然后核算出相关操控信号发送给CPU操控模块以便操控指令的读取;一起,假如指令为LCALL或许ACALL,则能够剖分出子程序进口地址并报送PC模块,引导PC正确跳转;在ROM模块剖析指令的一起,译码器DECODER也在进行译码的动作,它将依据指令的8位数据剖分出三个重要的参数:ALU的动作类型,该指令的操作数据来历以及读取方法,该指令成果的寄存方位以及寄存方法;第一个参数送给ALU模块,其他两个送到CPU操控模块;CPU操控模块CPU_CON是整个CPU的中心部分,首要完结两个效果:ALU履行前的读取数据操控,以及ALU履行完结之后回写数据操控;该模块一起也操控着整个CPU的时序,监督其他模块的履行状况;ALU则首要是完结核算作业;INteR模块则是中止体系的操控模块,其功用首要完结对各个中止源所提交的中止恳求的有用判别以及排序,发生中止标志并且将判别成果以及中止进口地址编码提交给ROM模块,以指示程序跳转,一起还需求担任在中止完结之后铲除中止标志以及康复中止之前的中止等级; DS80C320有三个定时器和2个串行口,其间定时器2和串行口假如不需求的话能够削减;至于其他的模块或许寄存器则在CPU操控模块的操控下经过数据总线交流数据;可见,本规划的思路是以CPU_CON操控整个CPU的履行以及时序,以INTER操控整个中止体系,其他寄存器则以数据总线来完结数据的交流,均匀的散布在数据总线的两边,结构明晰简略,规则化的规划也有利于进步速度,以及便利削减。
3 一些规划特色
3.1时序规划
在DS80C320单片机的材料里边只需外部接口的时序介绍,关于内部的信号履行则没有阐明,因而需求从头规划,本软核对DS80C320的时序进行了详细的剖析,依照黑盒子的思维,加入了流水线的技巧,对其时序的规划如下:
关于一般指令的履行进程,内部时序区别如下:
图2 DS80C320内部时序图
这是一条单字节单周期指令的履行进程,在C1的上升沿开端译码以及查找本指令的长度周期表,一起,数据总线上面是正在回写的上一条指令的成果;到了C2的上升沿,数据总线和地址总线的操控权就回到了本条指令的手里,这个时分地址总线用来发送需求读取的数据的地址,数据总线则做好从发送数据到接纳数据的预备,这个动作由CPU操控模块完结;然后在C3的上升沿,被选中模块依据地址总线和操控总线读出相关数据并送入数据总线,在这今后的一个时钟长度的时刻里边,ALU接到了数据,然后在C4的上升沿,开端履行数据处理,一起,CPU操控模块再次改动地址总线和操控总线的内容,并发布写信号,提示开端被选中读数的模块抛弃对数据总线的操控权,以及被选中的存储成果的模块剖析写入类型,作好接纳数据的预备,ALU在核算完结之后就将成果放到数据总线,等候下一个周期的C1开端将成果写入相关方位;总归,本规划充沛运用了数据总线的资源和流水规划的技巧,将原本需求6个时序的操作简化为4个就完结了,时序紧凑,速度快;一起采用了散布式处理的思维,大大简化了CPU操控模块的功用,只发布操控信号,详细哪个模块需求履行什么功用由该模块自行依据操控信号来判别,有利于防止因为部分功用过分会集而形成的芯片部分过热的问题;
3.2指令长度周期表的规划
指令长度表首要是用来操控取指令,以及区别指令代码和指令参数;而指令周期表则首要是用来操控指令履行的时刻,这两个表能够简化对指令履行的操控。一般这个进程由ROM模块依据现已读取的指令来查表,然后依据查表的成果和时序状况来处理剖析,发生一系列操控信号,并发送给CPU操控模块,这样做的长处首要是防止CPU操控模块与指令以及数据打交道,削减其输入输出端口数目;指令长度周期表的规划是和读取方法休戚相关的,本规划运用自己独自构建的表,并且一分为二,处理方法是为:index={lsb_3, ir[7:4]},其间lsb_3的意义为:关于指令的低三位(ir(2 downto 0)) 规则为:8-F=》7,6-7=》6,0-5不改动。两个表运用相同的读取方法,这样既能够简化结构,将查找空间下降为7位,又能够进步查找速度;
3.3 PC异动编码的效果
在单片机内部,PC是需求不断改动的,不只一切的跳转类指令都需求改动PC的内容,并且中止类指令还需求完结PC的出栈以及入栈操作;因而,有些模型里边对PC的处理反常杂乱,基本上是对每条指令详细规则PC的改动;本规划在这方面的处理采用了编码的技巧来进步速度;首要剖析编码的可能性,尽管许多指令能够改动PC的内容,可是关于PC来说,除了正常的加1操作,其它的改动方法只需如下几种:
其间pmem1和pmem2为指令参数,来自于ROM模块;PC_OUT为仓库中的PC内容。
剩余的难题便是由谁来宣布这个编码,关于一切的跳转类指令以及中止类指令,每条指令的跳转条件是不相同的,需求逐个判别,本规划就奇妙的运用了ALU模块来处理这个编码,ALU模块核算的时分也是需求对操作进行判别的,因而,只需增加一小段代码就能够让其完结发送编码的功用;PC编码的方法大大简化了PC模块的操作,使得程序愈加规整;
3.4 双向P端口的模仿
这儿首要是P0和P2双向端口的模仿;关于典型的单片机,其P端口一般都是双向的,可是关于FPGA规划来说,以现在的芯片结构,在FPGA芯片里边完结真实的双向是不可能的,因而,作为软核来说,双向的模仿就一定要处理好;常用的解决办法有这么几种:一种是直接将双向端口改成两个单向的端口,这样关于软核来说运用愈加便利,本规划也供给了这种方法供挑选,可是这样就与规范的单片机不相同了,因而,本规划也供给了一种模仿的双向口,依据FPGA规划的特色,改动信号线的方向必须有个切换的进程,这样就只好细心的来剖析指令时序,看看能不能在P端口运用的空隙来处理这个切换进程;首要是剖析指令是否需求运用P端口,比较重要的操控信号有译码器发送的RD_LATCH信号,用来区别指令是否需求运用P端口,还有来自于CPU_CON的操控总线信息,用来奉告P端口需求完结的详细功用;假如需求运用P端口的复用功用,则由相关的需求运用P端口的模块(如串行口模块)发送恳求指令;然后P端口剖析一切的运用恳求,依据不同的运用方法来组织不同的运用状况;假如需求双向切换,则依据时序以及指令特色来处理,然后顺利完结双向的切换进程。
4 归纳与验证
运用Altera公司的Quartus II 4.2软件来归纳,运用Nios Development Board,Cyclone Edit开发板来进行板上验证;归纳成果如下:
其间,前一个版别是没有内部串行口的版别;时序仿真验证的成果标明,在上述频率下该体系能够安稳的作业;理论上换算成8051的主频为:83*2.5=207.5M,这基本上能够习惯绝大部分需求单片机操控的场合了;仿真测验首要运用了modelsim SE5.8以及quartus4.2的VWF文件测验;板上波形观测首要运用Agilent公司的 1673G 逻辑剖析仪;一起充沛运用了开发板的资源进行了很多的体系级测验;将程序下载到芯片里边,运用逻辑剖析观测到部分指令的履行波形为:
图3 中止指令波形图
这是一条中止回来指令的波形图,指令代码为32H,首要观测PC的改动,PC在这条指令之后从3FH又改动为中止发生前的地址25H。
5 结束语
本规划具有速度快,可削减,具有杰出的可重用性和可移植性,彻底兼容DS80C320单片机接口,以及便利运用等长处。尤其是专门结构的内部结构以及时序分配,使得其高速性能在现在的51系列软核里边基本上是最前列的。因而,能够很便利的应用于需求单片机软核的FPGA规划以及嵌入式体系规划之中。