
MC8051单片机IP核的FPGA实现与应用.docx
10页1 引言长期以来,单片机以其性价比高、体积小、功能灵活等方面的独特优点被广泛应用但受其内部资源的限制,单片机需要在片外扩 展相关资源为了达到处理速度和控制灵活性方面的需求,采用微控制器和可编程逻辑器件设计单片机嵌入式系统随着现场可编程逻 辑阵列(FPGA)及EDA技术的发展,百万门级的FPGA、可重构的嵌入式MCU核、功能复杂的IP核及各种功能强大的EDA工具的出 现,实现将MCU、存储器和一些外围电路集成到一个芯片成为可能随着IP核技术在FPCA中的应用,特别是MCU IP核技术的发展 出现了性能不同的嵌入式MCU软核MCS-51系列MCU是目前应用时间最长、最普及、可获得应用资料最多的功能强大的8位MCU, 建立8051 MCU可综合IP核对于各种嵌入式系统和片上系统(SOC)的应用针对8051MCU的应用前景,出现了几个比较典型的8051 IP核,如DW8051核.OpenCore组织的0C8051核及T51核,MC8051核等这些IP核都是采用HDL语言描述的软MCU内核, 其与工艺无关,能够在多种FPGA上进行逻辑综合及实现这里采用免费的MC805IIP核,通过对MC8051结构原理的分析,详细论 述其在FPCA中的实现及应用。
2 MC8051 IP核基本结构及原理MC8051是与MCS 一 5l系列微处理器指令集完全兼容的8位嵌入式微处理器,通过芯核重用技术,可广泛应用在一些面积要求比 较苛刻,而对速度要求不是很高的片上系统中2.1 MC8051 功能特点采用完全同步设计:指令集和标准8051微控制器完全兼容;指令执行时间为I〜4个时钟周期,执行性能优于标准805l微控制器 8 倍左右;用户可选择定时/计数器、串行接口单元的数量,最多可增加到 256 组;新增特殊功能寄存器用于选择不同的定时/计数器、 串行接口单元;可选择是否使用乘法器(乘法指令MUL);可选择是否使用除法器(除法指令DIV);可选择是否使用十进制调整功能(十进 制调整指令DA); I/0 口不复用,无双向数据I/O端口,输入、输出端口独立;内部带256Byte RAM; (11)最多可扩展至64 KB的ROM 和64 KB的RAM;与工艺无关,可通过修改VHDL源代码扩展及参数化设置2.2 MC8051 结构及设计层次图1给出MC805l_eore的顶层设计模块及其子模块,包括顶层的各个信号端口及3个存储器模块同时给出了顶层的输入输出I /O 口。
定时/计数器和串行接口单元,对应于图中的MC805l_tmrctr和MC8051_siu模块,数量可选择,图中用虚线表示MC8051 IP核与工业标准8051单片机不同,MC8051的输入、输出并口分别映射到独立的端口上其顶层各I/O信号的描述如表l所示^1MC8O5I【卩核顶层信号名信号名描 述类型Clk系统时钟•只用到时钟上升沿Reset异步复位所有触发器AlljOJ世时/计数器U输人引脚AlJ_tl J定时/计数器1输人引脚All rxd i异步串口数搦接收输入JntOJ外部中断0辆人引脚输入lntl iL外部中斷1输人引脚M 口輪入引脚Pl iPi 1」输入引脚P2 iP2 口输人引脚P3JP3 口输入引脚All_OLdwr_oRxd输人/输出方向控制信号All Lxd o串□薮据输岀引脚 -Ail_rxd_o串口工柞于模式0吋数据输出引脚IgP0 口输出引脚输出卩IPI 口输出引脚P2_o巴口输出引脚P3 oP3 口輸出引脚MC805IIP核的设计层次及对应的VHDL文件如图2所示嘲它由定时/计数器、ALU算数逻辑单元、串行接口单元和控制单元组成 RAM 及 ROM 模块不包括在 IP 核内,处于设计的顶层,方便于不同的应用设计及仿真。
申 r「:r(:?■■ h」;:乜dtnll adju尼 dcnilCditfi inJt^d4l(kJUlh c)rtlROMI^^ 11KHJ5I rflih HKJOlJJ ran rtinv8O51_imx:ir gSMl liir^lr數理和Ft mcSD* FhkWWI dlu 測 wJblr 2.3.1 时钟管理单元MC8051内核采用完全同步的时钟设计只有一个时钟信号控制每个存储单元的输入没有使用门时钟,时钟没有输入到任何组合 逻辑单元中断输入线使用两级同步(锁存2次)与全局时钟同步可以达到完全同步,即使用其他时钟的外部电路在驱动并行I/O端 口没有采用这种同步方式2.3.2 定时器、串口和中断标准8051微控制器只提供两个定时/计数器单元、一个串口单元及两个外部中断源而在MC8051 IP核中,这些单元最多可增加 到256组,只需修改VHDL源代码增加兼容的单元数在VHDL源程序文件mc8051_p. vhd中,更改C_IMPL_N_TMR、 C_IMP_SIU、C_IMPL_N_EXT的常量值就可以,其范围是1~256相关的VHDL代码如图3所示选择定吋/计数器单元数 f默认值:1c on sunt C-IMPL N.TMR : liueger : =4;■■■ ~~ —- MS MX ” ” . ___"选择串口单元数一默认值:C-IMP^KMR --(不能改变)-- consiant C-IMPL. N S!U : integer : = C_I叫XTMR;■ ■ — ■ ■ ■ — — — —■■■■■■焙 I 士 ■一选择外部中断源单元数一默认值:C-IMPL_N_TMR 一(不能改变2_ constant C TMPL_N_EXT : integer 卩 C_IMPL.LT碉图3定时器、串口及中断单元数设< VHDL代码这里 C_IMPL_N_TMR、 C_IMPL_N_SIU、 C_IMPL_N_EXT3 个常量参数不能独立修改数值,只能同时增减。 C_IMPL_N_TMR 加 l 意味着对应的添加了 2 个定时/计数器、一个串口单元和 2 个外部中断源为了能寻址所生成的单元而不改变微控制器的地址空间, 在微控制器的特殊功能寄存器(SFR)内存空间增加了 2个8位寄存器作为附加功能寄存器:分别是TSEL(定时/计数器选择寄存器,地 址为Ox8E)和SSEL(串口选择寄存器,地址为Ox9A)如果以上的寄存器指向不存在的器件单元,将使用默认的l单元,如果没有对这 两个寄存器赋值,其缺省值为1如果在中断发生期间设备(寄存器)没被选中(比如TSEL),那么相应的中断标志位将保持置位,直到执 行中断服务程序2.3.3 存储器接口单元由于采用优化结构设计,存储器采用同步结构,限制输入、输出的时序,因而存储器输入、输出数据没用寄存器寄存2.3.4 可选择指令在某些场合,有些指令是用不到的,因此,通过禁用这些指令节省片上资源这些指令有8位乘法器(MUL)、8位除法器(DIV)和8 位十进制调整器(DA)禁用时只需要在VHDL源程序文件MC8051_p. vh中将C_IMP」MUL(乘法指令MUL)、C_IMP」DIV(除法 指令DIV)或C_IMPL_DA(十进制调整指令DA)的常量值设置为0即可。 如果这3条可选指令没有被执行,器件可节省约10%的资源 相应的VHDL程序代码段如图4所示选择实现乘法器指令⑴或者不实现(0} 亠-默认值:1constant C_IMPL_MUL : integer :F;IM ■“ MM MM MM IMH MM HM K! ■ IK -Ml ■» MP ■—选择实现除法器指令(I)或者不实现(0) 一一默认值:iconstant C-IMPL-DIV : integer : =1;—选择实现十进制调整指令(1)或者不实现(0 )―默认值:1constant C-IMPL-DA : integer := 1;I0HI agpi ■■■! ■■■ >^M: W *■■■ ■■■ ■图4可选指令设置VHDL程序代码2. 3. 5并行I/O端口为了便于IC设计,MC8051 IP核的I/O 口不提供复用功能,包括4个8位输入输出 口、串行接口、计数器输入端和扩展存储器接口如果要想将MC8051 IP核的并行1/ O端口改为双向1/0端口,设计时可以添加一些外围逻辑电路来实现其基本电路结构如 图5所示图中的2个D触发器起同步输入信号的作用(mc805l_co re的输入I/O不做 同步处理),也可以不用。 上拉电阻是必要的,因为1/0端口输出高电平是靠上拉电阻实现 的部部拉阻 内或外上电4 Q D至 mc805Kcore 输入端 px-i[7:0] <接mc8051.core输出端px.o[7:0]图5并行双向I/O端口基本结构2.4 MC8051 其他说明(1) MC8051 IP核的定时器和串口波特率的计算与标准8051 —样,由系统时钟经12 倍分频获得计数时钟2) 外部中断信号是经两级寄存器做同步处理后输入的3) MC805l_core的输入1/0不做同步处理,必要时可自行添加,如图5所示4) 写应用程序时,I/O端口如果没有做成双向端口,而是输入和输出分开的,应特别 注意诸如Pl=— P1、P1^O = P1^0这样的I/O取反操作是无效的,因为读回的值不是I / O 寄存器的值,而是输入引脚的状态3 MC8051 的 RTL 封装利用综合工具Synplify Pro软件实现对MC8051核的RTL封装,从而生成最终所需 的 MC8051 IP 核(.vqm 文件)3.1 MC8051 存储模块生成MC8051中所需的存储模块:内部RAM、扩展RAM和ROM其中内部RAM和ROM 是必要的,内部RAM固定为128字节,ROM最大可选64 K字节,鉴于FPGA片上RAM 资源有限,这里选用4 K字节(可根据需要修改);扩展RAM是可选,最大也可以达到64 K 字节,这里选用 2 K 字节。 由于采用Altera公司的FPGA来实现,所以可以利用Al—tera公司的集成开发环境 Quartus II来创建ROM、RAM模块在具体的FPGA实现中,可根据不同厂家的器件, 用厂家提供的工具来生成ROM和RAM,或者采用HDL描述实现3. 2 MC8051 IP 核 RTL 封装由于用的MC8051 IP核源代码顶层。












