首页 >> 直线光轴

基于RISC技术的8位微控制器设计点胶机

2022-06-26 02:16:18

基于RISC技术的8位微控制器设计

基于RISC技术的8位微控制器设计 2011年12月10日 来源:

摘要: 介绍基于RISC技术的8位微控制器的设计与实现。主要包括RISC指令集的选取;取指单元、译码单元、执行单元的设计;取指、译码、回写三级流水线技术的实现。该微控制器包含8级硬件堆栈、1个8位计数器、1个计数器溢出中断、2个外部中断源、8位数据输入和输出端口、16个通用寄存器、2K×16位的程序存储器、512字节的数据存储器。设计使用可综合的Verilog语言描述, QuartusⅡ软件仿真,FPGA器件验证实现。

关键词: RISC Verilog 8位微控制器 FPGA

引 言

随着微电子技术的不断发展,超大规模集成电路的集成度和工艺水平不断提高,将整个应用电子系统集成在一个芯片中(SoC),已成为现代电子系统设计的趋势;以往高复杂度、高成本的嵌入式系统结构能够通过低成本的单片芯片实现。另一方面,复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)集成度和速度不断提高,功能不断增强,开发人员可以使用高性能的EDA综合开发工具和硬件描述语言(HDL)在短时间内设计出复杂的电子应用系统。目前,嵌入式系统已经在各行各业得到广泛应用。工控、通信、汽车、航空航天以及军事等各个领域都能看到嵌入式系统的身影,而微控制器(MCU)则是嵌入式系统的核心。

1 精简指令集计算机(RISC)

1.1 RISC的结构特征和设计原则

精简指令集计算机具有单周期单指令,存储器到寄存器的操作,简单的寻址方式和简单的指令格式的结构特征,其设计原则为:

① 选择使用频率高的指令,补充少量高效指令;

② 指令的结构简单,所有指令长度相等;

③ 采用流水线技术,尽量使CPI = 1;

④ 使用Load/Store操作指令访问存储器;

⑤ 采用通用寄存器(GPR)结构;

⑥ 优化编译,提高执行效率。

1.2 性能因子CPI和执行时间

性能因子是指微控制器每条指令的平均时钟周期数CPI(Cycles Per Instruction):

程序总的执行时间t为:

执行时间是微控制器性能的主要指标。在影响t的三个因素中,时钟频率取决于硬件技术;CPI与指令集和MCU的组成结构有关;而指令数由指令集和编译技术决定。要使微控制器的性能得到提高,优化指令集、减少程序的总指令数和降低CPI值是设计主要考虑的问题。

2 微控制器的系统结构

图1所示的微控制器主要由以下几个模块组成:

① PROM程序存储器单元(Program ROM)。程序存储器容量为2K×16位。系统复位后,程序计数器PC指向程序存储器000H单元,程序从000H处开始执行。

② IDEC指令译码单元(Instruction Decoder)。指令译码器对输入的16位宽指令进行译码,输出寄存器、数据存储器的地址和读/写控制信号。

③ ALU算术逻辑运算单元(Arithmetic Logic Unit)。ALU单元是MCU数据处理的核心部分,数据宽度为8位,具有加、减、逻辑运算和移位功能。ALU单元有2个8位的数据输入和1个8位数据输出,1位进位输入,1位进位标志输出和零标志输出。运算操作码输入为4位,由译码单元提供。

④ REGS寄存器单元(Register)。1组16个8位寄存器,用于数据的高速存取。寄存器组具有2个数据输出端口和1个数据输入端口,读和写地址分开,可同时进行读/写操作。

⑤ DRAM数据存储器单元(Data RAM)。包含4段共512字节(每段128字节)的数据存储器,直接寻址能力为128字节,间接寻址能力为256字节,由程序状态控制寄存器PSW的高2位控制段选地址。

⑥ CTRL控制单元(Control Unit)。整个MCU的控制中心,主要控制流水线操作、数据总线的控制和程序计数器的转移。另外,还包括中断、计数器和堆栈控制。

⑦ 其它。定义了1组数据输入端口、2组数据输出端口,数据位宽均为8位;2个外部中断输入INT0和INT1;1个8位计数器TIMER;7级程序堆栈Stack,可实现7级子程序调用;1个8位的程序状态控制寄存器PSW。各位功能如表1。 表1 PSW各位功能

PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 RAM段选 RAM段选 进位CIN 保留 INT1中断允许 计数器溢出中断 INT0中断允许 启/停计数器

3 流水线技术

3.1 三级流水线结构

微控制器采用取指(IF)、执行(EX)、回写(WB)三级流水线结构,如图2。各阶段的主要功能为:

取指级——从程序存储器中取出一条指令,同时进行指令译码,准备寄存器、存储器的读地址,读/写控制信号;

执行级——数据输入ALU单元运算,同时准备寄存器或存储器的写地址;

回写级——将ALU输出的运算结果写入寄存器或存储器中。

3.2 流水线竞争及解决

控制竞争,由程序PC 指针值的改变引起。当执行跳转指令时,PC指针值要到执行级才能改变,这将会使下一拍的取指操作出错。这时必须由硬件插入一条空操作NOP指令,等待PC指针的值改变后再取下一条指令。

数据竞争,由指令间数据相关引起。存储器访问存在先写后读相关(read after write),前一条指令的写操作要到回写级才能完成。若紧接的下一条指令需要读取同一地址的内容时,必须使用旁路(bypassing)技术,从ALU的输出结果直接反馈到ALU的输入端供下一条指令的执行级使用。

4 指令集和指令格式

微控制器指令长度为16位定长,操作码采用可变长结构。操作码长有4位(立即数运算)、5位(跳转,寄存器-存储器运算)或8位(寄存器-寄存器运算)。支持的指令覆盖了最基本的MOV、ADD、SUB、AND、OR、 XOR指令,以及移位、各种跳转指令等。指令集中可不含清零、取反、自增和自减指令,因这些指令可由AND、 XOR、ADD、SUB指令代替。在51系列单片机中, 累加器的清零、取反、自增和自减运算(单周期)比累加器-立即数的逻辑运算(双周期)快;而在实现了单周期单指令的RISC微控制器中,可用相应的逻辑运算指令实现寄存器的清零、取反、自增和自减操作,对性能没有影响。 图3 5 逻辑综合、仿真和硬件实现

所有模块均在Altera 公司的Quartus II 2.1上进行逻辑综合、仿真测试通过,并在支持存储器的 FLEX10KE系列FPGA器件上验证实现。逻辑综合结果为969个LE数(Logic Elements)。以下是一简单程序,仿真波形如图3。

000: ADD R1,#01H ;指令为1101H,R1对应Pb输出

001: MOV R2,Pa ;指令为FE62H,R2对于Pc输出

002: JMP 000H ;指令为C000H,循环跳转

从仿真波形上可以清楚看到程序执行时PC指针的改变、Pb口自增及Pa口的数据传到Pc口的过程,也可大致看出程序的取指、执行、回写三级流水的执行过程。同时还可看到在执行跳转指令JMP后自动插入一条空操作NOP指令(FFFFH)。

结 语

从逻辑综合与仿真测试的结果看,该微控制器完全达到了设计指标。设计的关键是三级流水线的实现和数据总线的控制。设计使用Verilog 语言描述,可读性好,易于增减资源和修改功能,可方便地应用于嵌入式系统中。由于时间仓促和水平有限,许多问题未能考虑,不足之处恳请读者赐教。

天津治前列腺多少钱

红河治疗白癜风哪家好

哪家医院治疗包皮过长

中卫妇科哪家医院治疗妇科好

小儿水杨酸盐类中毒的症状和表现有哪些

妇科医院排名

友情链接
脱毛蜡纸 医学医疗行业力学性能试验机厂家 武汉癫痫病医院在哪儿 脂溢性皮炎导致的脱发怎么办 一过性头晕恶心会不会是中风了 手臂肌肉劳损怎么治疗 穗宝乳棕床垫 除沫器 数显液压万能试验机 爱依瑞斯沙发 穗宝 拉力试验机 订制工装 京万红软膏 女性更年期易怒用什么药调理好 有点掌指关节畸形吃尪痹胶囊有没有用 肾虚引起腰膝酸软怎么办 赤鹿的效果怎么样 心脏早搏和心律不齐怎么治疗 老年痴呆最初表现怎样预防 小孩流鼻血是什么原因 盐酸氨溴索口服溶液一日几次 宝宝发烧吃什么比较好 失眠多梦服用柏子养心丸有哪些好处 治口腔溃疡的外敷药有哪些 术后肋间神经痛怎么治 小孩着凉肚子痛怎么办 2岁一个月的宝宝不爱吃饭怎么办 同仁堂国公酒对膝关节疼痛有用吗 有脚气泡脚会感染灰指甲吗 宁波中医院 肝炎怎样治疗 家庭常备药 不锈钢网带厂 上诉离婚律师推荐 上海起诉离婚财产 同仁堂再造丸什么人可以吃 依兰琳卡 风寒感冒头痛用什么中成药 寻医问药 东阿阿胶阿胶块 湖南长沙治疗妇产专科医院哪家好 深圳离婚调解 保山妇科专科医院哪家好 离婚金牌律师 临沂肛肠医院哪家好 离婚好的律师 铜仁治疗眼科专科医院 益阳肿瘤 宝宝脾胃不好积食怎么调理 扬州长城网带 著作权益 Mining Machinery 笔记网 银川定做工作服厂家 Fatigue Testing Machine Sofa 寻医问药 哈尔滨哪家医院看男科好 郑州癫痫病哪家医院好 山西看妇产哪个医院好 杭州精神科心理科专科医院排行榜 石竹网 Suppliers 小孩拉肚子怎么治疗 孩子发烧后能用小儿柴桂退热颗粒吗 小儿肺热咳喘颗粒治疗儿童咳嗽效果好吗