汽车电子控制单元ECU 的设计
令开始。 2k 的 ROM 寻址采用分页寻址方式,512 字节为一页,页面地址由状态寄存器 f3 的 PA1、PA0 选择。 每一页内可直接寻址,当涉及到页面之间跳转时(GOTO、CALL 指令) ,必须先把 f3 的 PA1、PA0 置成相 应的页面。程序由 PC 自动加 1 控制。程序控制操作支持直接、间接、相对寻址方式,能由位测试和跳转指 令、子程序调用指令、转移指令或把算出的地址装入 PC 来实现。 2.4 指令寄存器和译码器 8 位 ECU 的指令长度为 12 位,由 12 个带异步复位端的 D 触发器构成。指令寄存器在时钟上升沿锁入 从 ROM 读取的指令,并保持到时钟的下一个上升沿。一条指令的执行从指令寄存器锁入指令开始。 指令译码器是 ECU 的核心部分,指令寄存器锁入指令后,译码器开始工作,对指令进行译码,给出其 它各单元的操作控制信号,包括 ALU 的运算控制信号、RAM 的读写控制、总线控制器的选择信号、专用 寄存器的数据更新控制、PC 的寻址等。根据指令的特性,译码器的设计采用分段译码,即把 12 位的指令 分成 3 段,每段 4 位,用的比较多的是 2-4 译码器和 3-8 译码器这两种[5]。 2.5 通用寄存器(SRAM)和特殊寄存器 通用寄存器的设计本文采用静态读写存储器(SRAM) ,其基本存储单元是由 6 个 MOS 管构成。通用 寄存器的大小为 72×8bits,它由 7 条地址线 位输入数据线 位输出数据线 条 地址线 个单元,但是存储器单元只有 72 个单元,所以必须通过组合电路将 7 条地址线 个单元之内,再通过动态译码将 7 条地址线 个地址控制线和产生片选信号。读控 制信号是由写控制信号取反获得。为了与整个系统配合,对 SRAM 进行读写操作时,采用前半周期进行读 操作, 后半周期进行写操作。 特殊寄存器是由状态寄存器 STATUS、 选择寄存器 OPTION、 体选寄存器 FSR、 工作寄存器 W、3 个 I/O 口寄存器、3 个控制寄存器组成。 2.6 监视定时器WDT(Watch Dog Timer) 监视定时器用于当系统进入休眠状态或因外界干扰处于失控状态时, WDT 超时溢出产生一个复位信号, 来激活系统继续正常工作。 本文设计的 WDT 是用一个 8 位的计数器实现的,其中计数器的时钟输入前接了一个 2 选 1,2 选 1 的 作用是用来选择对内部时钟计数还是对从预分频器过来的时钟计数。对时钟的选择是由 OPTION 寄存器的 PSA 位来实现的, 预分频器的分频率是由 OPTION 寄存器的 PS2~PS0 位来定义的, 可以实现 2~256 分频, 以满足不同的定时精度。 在 WDT 需要完成一个精确的 STACK1 ROM PC 看门狗 分频器/预分频器 时钟 或是时间较长的定时时,可以通过 STACK2 软件控制写 OPTION 寄存器, 把预 指令寄存器 OPTION 寄存器 分频器分配给 WDT。 如要用 WDT 地址总线 来实现对系统的定时复位,则要根 指令译码器 据内部振荡器的频率以及设计的 SRAM 定时复位周期来决定计数器的位 STATUS TMR0 FSR 数[6]。 寄存器 寄存器 寄存器 2.7 振荡电路 数据总线 本文利用振荡电路产生内部 W寄 运算单元 存器 时钟,与外部时钟相配合构成整个 From W From W From W 时钟系统,当使用外部时钟时,内 A 控制器 A 口 B 控制器 B 口 A 控制器 A 口 部时钟处于省电状态。EN 使能端 为高,使用内部时钟,反之,用外 部时钟。 I/O I/O I/O 2.8 总体框图 图 4 总体框图 总体框图见图4。
汽车电子控制单元 ECU 的设计 李鸿强 刘志春 苗长云 (天津工业大学 信息与通信工程学院,天津 300160) 摘要:本文给出了汽车电子控制单元 ECU 的 IP 核设计。该 IP 核基于 RISC 技术的单指令、单周期的体系 结构,并采用了自顶向下(top-down)的设计方法和硬件描述语言 Verilog HDL,给出了 ECU 的体系结构以 及各个功能模块的具体设计和仿真结果。 关键词:汽车电子;电子控制单元;精简指令集计算机;IP 核 中图分类号:TN492 文献标识码:A The Design of Automotive Electronic Control Unit LI Hong-qiang,LIU Zhi-chun,MIAO Chang-yun (School of Information and Communication Engineering, Tianjin Polytechnic University, Tianjin 300160,China) Abstract:The paper proposes a ECU IP core design, which is based on one clock one instruction architecture and RISC technology. The design uses top-down method and verilog HDL. The architecture and all functional modules of ECU have been given in detail in this paper. Keywords:Automotive Electron;Electronic Control Unit;RISC;IP core 1 引言 2005 年是中国汽车市场发生深刻变化的一年。以国际汽车发动机研发中心向中国市场转移为契机,预 示着中国汽车整车零部件的本土化水平和技术创新水平有望大幅度提高,中国汽车电子市场国际化的进程 将迈上新的台阶。新的变化促使我们以全球化的视野去看待中国汽车电子市场的发展水平。目前,中国汽 车电子厂商在核心技术上的经验积累和资金投入上还面临巨大的困难,中国最缺乏的是了解汽车工业且具 有丰富的设计、应用和验证经验的汽车电子工程师,因此,在 ABS(Anti-skid Brake System)和 ECU (Electronic Control Unit)的本土化方面仍然面临很大的挑战。 对于汽车来说,ECU 负责接受各种信号,经由内建的基础程式判别后,来控制各个系统,以维持汽车 正常的行驶。对于 ECU 电子控制单元,不同厂家的名称不尽一致,如日本电装公司叫 ECU,德国博士公司 称为 EDU,威孚公司也称 EDU,还有叫做 Engine Control Unit-发动机控制单元等。ECU 广泛应用于各种电 控系统中,例如:电控共轨系统、ECS 系统、电子调速器、电控分配泵、电控泵喷嘴等。ECU 按照预先设 计的程序计算各种传感器送来的信息,经过处理以后,再发送给各相关的执行机构,执行各种预定的控制 功能。 2 ECU 体系结构 本设计中的 ECU 采用 top-down 的设计方法和哈佛总线结构,片内程序存储器容量为 2k×12bit,片内静 态存储器 SRAM 容量为 72×8bit,也可用作通用存储器,有 7 个硬件构成的专用寄存器和 2 级硬件堆栈,数 据字长 8 位。指令系统共有 33 条指令,指令字长为 12 位, 除了程序分支指令需要 2 个指令周期之外,其余 指令都是单周期的。寻址方式有直接、间接、相对和位寻址四种。外围功能部件有:定时器/计数器 RTCC、 8 位可编程的预分频器、上电复位电路和监视定时器 WDT。 ECU 采用两级流水, 在一个指令的执行周期中, 片内 ROM 的数据读取时间一般为几个纳秒, 片外 ROM 的读取时间则要 100 多纳秒的时间,快一点的也要七八十个纳秒,因此指令的读取是一个指令周期中占时 最长的。本文设计的 ECU 中 ROM 的地址在时钟下降沿送出,从下降沿到下一个时钟的上升沿为程序存储 器 ROM 的读取时间。指令存储器在下一个时钟的上升沿取指令,其时序如图 1 所示。第一条指令的地址由 系统上电复位置数得到。系统从上升沿取得指令开始,到指令执行完成,这中间的执行部件为逻辑器件, 与时钟无关。当指令存储器读取下一 CLOCK 条指令的同时,指令执行结果写入专 PC 用存储器。指令执行过程时序如图 2, ROM 取 指 和 回 写数 据 均 在 时钟 上 升 沿 完 成。 读取指令 严格来说,在一个指令执行周期 图1 读取指令时序
中,一条指令的执行只有半个时钟周期,另外半个时钟周期作为ROM读取数据的时间。也就是说,从指令 寄存器取得指令开始到指令执行结束只有半个时钟周期[1]。 2.1 运算单元(ALU) 运算单元是ECU的算术和逻辑运 上升沿 上升沿 上升沿 上升沿 算单元,是一个由组合逻辑电路构成 的部分。ALU连接一个工作寄存器(W 周期 1 周期 2 周期 3 寄存器),它是通过W寄存器对数据进 取指 1 并执行 取指 2 并执行 取指 3 并执行 行算术和逻辑运算,也可对W寄存器 回写数据 1 回写数据 2 回写数据 3 或任何文 件 寄存器的 操 作量单独操 作。运算包括加、减、与、或、非、 图 2 指令执行过程时序图 左移、右移、循环移位、换位这9种运 算。具体进行什么运算由指令译码器输出的运算控制码决定。 运算单元是指令执行的最坏路径上的一个主要环节,且是影响最坏路径上延时的最主要的部件。因此, 应尽可能的使ALU的延时降到最小。在ALU的9种运算中,加法器又是最关键的部件,它的延时是最大的。 为了尽可能的提高ECU的工作频率,在加法器的设计中,我们设计了8位超前进位加法器 [2]。 为了减小系统的功耗,整个ALU采用了低功耗设计。具体设计方法是:先对操作控制码ALUOP进行译 码,产生控制信号。在系统复位或不工作时各运算单元处于休眠状态,根据译码产生的控制信号只唤醒需 要工作的单元模块进行运算,然后输出运算结果。其工作原理框图如图3所示[3]。 图3中ALUOP[2:0]是ALU运算控制信号,ALUOUT[7:0]是ALU输出,OPRA[7:0]是操作数输入,其 中ADD、SUB、AND、OR、XOR的输入是两个8位的操作数,其他4种运算只有一个操作数。图中的三角形 是三态门,用于操作数输入的选 ADD&SUB 通。选通信号由译码器给出。加运 算和减运算可以用一个8位的全加 AND 器实现, 减运算时最低位的进位输 译 入为“1”,且减数取反输入。 OR 2.2 PC和堆栈 ALUOP[2:0] ALUOUT[7:0] XOR 码 为了保证程序能够连续地执 行下去,ECU 必须具有某些手段 COM 器 来确定下一条指令的地址, 而程序 计数器 PC 正是起到这种作用,所 ROR 以通常又称其为指令计数器。 在程 ROL 序开始执行前, 必须将它的起始地 OPRA[7:0] 址, 即程序的第一条指令所在的内 SWAP 存单元地址送人 PC,这时,PC 的 内容就是要从内存提取的一条指 图 3 ALU 原理图 令的地址。当指令执行时,ECU 将自动修改 PC 的内容,其内容总是保持为将要提取的下一条指令的地址。由于指令通常是顺序执行的,所 以修改的过程通常只是简单的 PC 加 1。但是,当遇到调用指令 CALL 时,将 PC 的下一条指令压人堆栈, PC 的内容改变。同样,当遇到转移指令 GOTO 和返回指令 RETLW 时,PC 的内容也要改变[4]。 堆栈是以后进先出(LIFO)的规则存取信息的。当信息存入堆栈(压栈:主要在程序调用时,即执行 CALL 指令)时,堆栈指针将从栈顶开始自动递减,把数据压栈;当要从堆栈读取信息(出栈:子程序执行 完返回)时,堆栈指针将从栈顶开始自动递增。本文设计的 ECU 提供了两层 11 位的硬件堆栈,为子程序 嵌套提供了方便。 2.3 ROM 程序存储器容量为2k×12bit,采用的是片内ROM,其地址由程序计数器PC在时钟下降沿送出,ROM的 数据读取时间为半源自文库时钟周期。指令寄存器在时钟上升沿读取指令。指令的执行周期从指令寄存器读取指
上一篇:2013款天籁是国几排放