M8051 IP软核的改进性设计及其在视频字符叠加器中的重应用
2008-09-05
作者:李建峰1, 谢 军2, 张金
摘 要:介绍了系统芯片SOC的概念和M8051 IP软核" title="软核">软核的原理,给出了视频字符叠加器" title="字符叠加器">字符叠加器VAD_SOC中M8051 IP软核的作用,详细介绍了I2C主控制器" title="主控制器">主控制器模块的设计,给出了功能仿真波形,最后对M8051IP软核在视频字符叠加器中的重应用进行了深入研究。
关键词:系统芯片 微控制器 M8051 IP软核 视频字符叠加器
随着集成电路制造技术的快速发展,集成电路的规模不断扩大。这使得将复杂系统集成在单个芯片上成为可能,于是便出现了系统芯片SOC(System on a Chip)。传统芯片设计方法" title="设计方法">设计方法关注的是如何创建一个全新的设计并进行有效的验证;如今在SOC设计中,基于IP模块的功能组装正在逐渐替代传统的功能设计而成为主流设计方法。基于IP模块的SOC设计方法的基本思路是通过系统设计的应用层次,利用现有的IP资源,根据系统需求选用适当的IP模块,进行系统集成设计;基于IP模块的SOC设计方法是采用IP模块而不是采用基本逻辑或电路单元作为基础单元,即以功能组装代替功能设计。这就提高了设计者的设计能力,能够较快地完成设计,保证设计成功,以极低的价格满足市场需求。
M8051 IP软核是高性能的8位微控制器(MCU),它的每个机器周期只需要两个时钟周期而不是标准8051[1]软核的十二个周期,但是它的功能却与标准的8051软核兼容。这就使得M8051 IP软核在同样功耗的情况下运行速度比标准的8051软核提高六倍,也就是说,若在同样的运行速度下,M8051 IP软核的功耗仅仅是标准8051软核的六分之一。这对于现在的便携式数字产品或低功耗产品来说是相当有竞争力的。
视频字符叠加器是一种在视频信号中叠加入字符或简单的图文信息,从而在屏幕的特定位置上与图像信号同时进行显示的设备[2]。视频字符叠加器VAD_SOC的结构如图1所示,具体包括以下几个IP模块: M8051 IP软核、I2C主控制器模块、 存储器核和全彩色字符叠加处理器(FCA IP)等。其实现的功能是将片外或内置的叠加字符ROM(如E/E2PROM、双口RAM或Flash)中储存的字符信息转变为可叠加在视频信号上的信息,同时通过内部时序控制功能单元,调节叠加字符在监视器上的叠加位置、大小及其背景色和前景色等。
本文主要介绍M8051 IP软核的改进设计,对其进行有效的仿真和验证;并对M8051 IP软核在视频字符叠加器VAD_SOC中的重应用进行深入的研究。
1 M8051 IP软核结构及其改进性设计
1.1 M8051 IP软核的结构
M8051 IP软核的功能结构框图如图2所示,主要由五部分组成。
(1)算术逻辑单元" title="算术逻辑单元">算术逻辑单元(ALU)部分:位算术逻辑单元、带进位的算术逻辑单元、8位的算术逻辑单元,操作数的选择、乘法/除法单元。
(2)数据存储与交换部分:内部数据存储器、内部专用寄存器及其复用、专用功能寄存器的复用、核级专用功能寄存器。
(3)状态机与程序存储部分:主状态机、程序计数器、程序计数器的运算单元。
(4)指令译码部分:取指令、指令译码。
(5)外围设备部分:(I/O)端口寄存器、中断、定时器、计数器、通用串行口。
从图2可以看出,M8051 IP软核与传统8051单片机在组成部分及指令系统部分是兼容的,但功能上有些不同,详见表1。所以,若要将M8051 IP软核集成到视频字符叠加器VAD_SOC中,则需要进行一些简单的功能扩展和可复用设计。
1.2 I2C主控制器的RTL级实现
I2C总线是Philips公司提出的一种串行数据传输技术,通过数据线(SDA)和时钟线(SCL)两个总线即可完成全双工同步数据的发送和接收,在需要与外围器件进行低速通信时,I2C总线是个不错的选择。目前8051 IP软核是片上系统中用得比较多的微控制器核之一,但是其没有集成I2C总线,应用起来很不灵活。所以在设计片上系统时常常需要将I2C系统集成到8051 IP核中,以方便其与MCU的外围接口连接,扩展8051 IP核的功能。由于篇幅的限制,本文只对I2C主控制器模块进行简单研究。I2C主控制器模块是根据Philips公司的8xc552的I2C接口原理设计的。由于通常情况下单片机系统都作为主系统使用,一些功能是不需要的,所以图3只是本设计用到的I2C原始的功能结构简化框图。
1.2.1 I2C主控制器的端口源代码格式[3]
I2C主控制器端口源代码格式如下:
module i2c_top (s1sfrdi,si,sda,scl,regresult,source_addr,
destine_addr, sfr_write, rmw, internal_reset, pclk_en, pclk);
output [7:0] s1sfrdi;
output scl ,si;
inout sda;
input [7:0] regresult;
input [7:0] source_addr;
input [7:0] destine_addr;
input sfrwe, rmw, internal_reset;
input pclk, pclk_en;
……
endmodule
1.2.2 I2C主控制器与M8051 IP软核的接口
I2C主控制器的数据端口(SDA)是双向端口,利用串行数据线SDA传输数据,所以不使用总线时必须关闭三态门的输出控制端,即sda_oen为“0”;另一方面,数据可以通过引脚直接进入模块内部,但必须设置输出控制端为“1”,即sda_oen为“1”。I2C主控制器与M8051 IP软核的接口如图4所示。
1.2.3 I2C主控制器的软件仿真与结果
在I2C主控制器设计过程中,主要用Modelsim SE PLUS5.6、QUARTUS2.0等软件作为前端的仿真工具并 针对I2C主控制器的主接收和主发送两个状态机的不同激励条件,编写测试代码进行测试。电路仿真时序波形图如图5和图6所示。
2 M8051 IP软核在视频字符叠加器VAD_SOC中的重应用
M8051 IP软核在视频字符叠加器VAD_SOC中的重应用的结构如图1所示。它的主要任务是从程序存储器中读出指令代码,经编译执行后,向周围的相应模块提供操作命令和地址、数据总线值,完成一个复杂的状态机及对其它模块的部分控制功能,协同其它模块共同工作,实现将字库中的字符取出放到全彩色字符叠加处理器上进行显示。工作流程如下:
(1) 将要显示的字符从PC机的键盘输入,经串行口RS-232的接口写入到字库中。
(2) 从程序存储器中读出指令代码,经编译执行后,向周围的相应模块提供操作命令和地址、数据总线值。
(3) 继续执行代码,从字库中读入要显示的字节数据,并将它存放在SFR(专用寄存器)中。
(4) 继续执行代码,将专用寄存器中的数据传送到双口RAM中进行缓存。
(5) 通过对控制模块的控制,实现数据读取、地址生成,并按时空拓扑划分的形式进行行、列地址及数据信号的选择。
(6) 最后,将选择出的信号通过三通接口加到视频信号中进行显示。
基于以上考虑,本系统中M8051 IP核具有一定的专用性,是针对具体的VAD_SOC系统而设计的,因此不需完全拘泥于标准的MCU的所有特点,只需设计出满足VAD_SOC系统要求的嵌入式M8051 IP核即可。
2.1 视频字符叠加器VAD_SOC的设计及功能仿真
2.1.1设计流程
第一步:生成VAD_SOC顶层初始网表。在四个模块开发之后,只需开发用于集成的网表,即可用于模块之间的连接。
第二步:处理VAD_SOC顶层中四个模块的时序预算,此时每个模块建立一个“黑盒”时序模型。
第三步:改进VAD_SOC顶层布线,在模块实现的同时解决顶层的信号完整性问题。此外,还要考虑前两步中不需涉及的电源问题,其中包括模拟模块和I/O模块问题。同时模块层的实现也在此步进行,通过采用物理综合方法来确保模块层的时序收敛。VAD_SOC顶层设计和四个模块实现之间是同步进行的。
第四步:用模块的实际尺寸修改VAD_SOC顶层描述,这一步需用Aristo 的IC Wizard处理,大约需要2~3小时。
2.1.2 视频字符叠加器VAD_SOC的仿真波形
视频字符叠加器VAD_SOC的功能仿真是在NC_Verilog下进行的,图7显示了两个场同步周期的字符叠加信号的仿真波形图。
建立在IP模块功能组装基础上的片上系统设计,使设计方法从电路设计转向系统设计,设计重心从逻辑综合、门级布局布线、后模拟转向系统级模拟、软硬件联合仿真、以及若干个IP模块组合在一起的物理设计。为了对各模块特别是IP模块进行有效的测试,还必须在模块中加入可测性设计;同时,在验证方法上要采用数字电路和模拟电路在一起的混合信号验证、软硬件协同验证以及并行验证等多种方法。经过试验可知,M8051 IP核在视频字符叠加器VAD_SOC中实现了所需的基本功能,并且仿真主频率可以达到33MHz。
参考文献
1 何立民.单片机应用系统设计.北京:北京航空航天大学出版社,1990
2 傅万钧. 应用电视技术.北京:电子工业出版社,1994
3 夏宇闻.复杂数字电路与系统的Verilog HDL设计技术.北京:北京航空航天大学出版社,1998:87~100
4 Rochit Rajsuman. SOC设计与测试.北京:北京航空航天大学出版社, 2003:96~107