EDN China > 设计实例 > EDA工具与服务 > 正文
?

8位高速微控制器IP软核的设计与实现

耿磊 李平等?? 2008年09月17日 ?? 收藏0

  算术逻辑单元

  算术逻辑单元(ALU)是微控制器运算电路的核心部分,主要功能是按照指令译码器输出的控制信号,实现算术运算、逻辑运算、循环移位等操作。ALU 的字宽是8位, 在ALU中做运算的2个操作数分别来自W寄存器和数据总线,最后运算的结果由指令译码后的控制信号决定是存放在W寄存器中,还是通用寄存器 RAM中。本文通过将加、减操作复用到一个8位超前进位加法器,大大缩短了ALU算术运算的时间,进而提高了整个系统的运行速度。

  程序计数器和堆栈

  13位的PC对8k×14bit的ROM进行寻址,八级堆栈存储的是ROM的地址,即在主程序中调用的子程序最多允许嵌套8次。当系统复位后PC从 0000h地址开始执行,然后在每个指令周期q1节拍,PC自动加1。当执行GOTO指令时,就从指令中获取地址来改变PC的值,然后PC再在此基础上自动加1,顺序执行指令。当执行调用子程序指令CALL指令时,把取指的地址送到堆栈保护起来,然后PC装载子程序入口的地址,接着顺序执行子程序指令直到子程序执行完,程序返回时把堆栈中的地址装载到PC,PC继续自动加1顺序执行指令。

  在每个时钟周期,PC会检测是否有来自中断处理单元的中断请求信号发生,一旦有中断响应,PC就会进入中断处理模式,把中断现场的地址送入堆栈保护起来,并在下一指令周期PC指向中断向量地址0004h,这是中断服务程序的入口地址,系统执行中断服务程序直到中断返回,再把保护在堆栈的中断现场地址加载到PC中,然后又顺序执行指令。

  定时器/计数器

  TIMER0为8位可读写的定时器/计数器单元,其内部有一个分频器,可以通过寄存器配置选择定时或计数工作方式,以及分频器的分频比,分频比最高可达l:128。当TIMER0从FFh到00h计数溢出时,将产生TIMER0中断。

  中断处理单元

  中断处理单元会响应各个中断源的中断,并向系统的控制电路发出总中断请求信号。该单元设置有8位中断控制寄存器和外设中断寄存器,使用标志位来记录各种中断请求。中断控制寄存器还包括各中断的使能控制位以及全局中断使能位。全局中断使能位将使能(置1时)所有未被屏蔽的中断,或禁止(清零时)所有中断。一旦进入中断服务程序,可通过查询中断标志位确定中断源。

  双向I/O

  PORTA和PORTC为2个6位双向I/O端口,每个端口有2个物理寄存器,分别是方向寄存器和数据寄存器。方向寄存器控制对应端口的输入/输出属性,数据寄存器负责锁存输入/输出数据。

  MCU IP核的硬件仿真

  IP软核的仿真测试是设计过程中非常重要的环节,通过自主建立的测试向量库,编写了覆盖所有指令的测试文件,对软核的多种指令、地址和数据组合进行了仿真测试,提高了软核功能仿真的测试覆盖率,保证了设计的正确性。由PORTA和PORTC的输出来验证设计正确性。部分信号波形如图3所示,在正常情况下,地址是在每个指令周期进行加1取指的;当中断信号int_req=1时,地址在下一指令周期跳到中断向量地址0004h,同时屏蔽下一条指令进入指令译码单元,用NOP指令代替。

MCU IP核的硬件仿真

  结语

  本文介绍了一个8位RISC结构的高速微控制器IP软核的设计,其指令集与PIC16F676兼容,采用模块化结构,面向硬件映射,保证可综合性。该核使用VerilogHDL为RTL级描述语言,通过了ActiveHDL仿真验证后,用Quartus II 5.0进行综合,并在Altera的EP1C12Q24C08器件上实现了布局布线。经测试,时钟频率达到了75MHz,验证了设计的正确性,为今后的设计积累了大量有益的经验。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

微控制器? IP软核? PIC16F676?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈