论文研究-基于CPLD的微处理器软硬件设计 .pdf

所需积分/C币:10 2019-08-21 05:41:29 447KB .PDF
12
收藏 收藏
举报

基于CPLD的微处理器软硬件设计,杨明君,Paolo Camurati,CoolRunner II CPLD是Xilinx公司最新开发的一个可以任意裁剪的软核。有最新配套的Xilinx ISE集成开发工程软件可以轻松的完成对硬件模块的描��
国武技论文在线 http:/www.paper.edu.cn 85对我们所要设计的汇编语言进行深入的研究和分析,完成词法分析,语法分析,语法编码转 换和微处理器指令序列的生成[5]。下面是一个汇编语言的一个文法描述 G=(N, T,P, S n-<assembler program>, <data segment>, <code segment>, <data item>, <data name>, <data type>, <data size>, <symbol set>, <number set>, <code item>, <control group >, <shift and 90 rotate group>, <logical group>, <arithmetic group >, <input and output group >, <interrupt group > <address symbol>, < control instruction>, <condition symbol, shift and rotate instruction> <register set>, <logical instruction>, <operand2:>, arithmetic instruction>, input and output instruction>, interrupt instruction>, <interrupt mode>, <nI>, T=DW, DB, DD,Z, NZ. C,NC, jump, call, return, load, and, or, xor, add, addy, sub 95 subc, mul, mulcy, div, divcy, input, output, interrupt, returni, enable, disable, srO, srl, sIx, sra, s10, sll,slx,sla,rl,s0.s1,S2,s3,s4,s5,.6,S7,0,1.2,3,4.5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m, n,0,p,q,r,s, t,u,v,W,x,y, z, A, B, C, D,E, F, G, H, I,J, K, L, M,N, O, P, Q,R,S, t, U,V, w ,Y,Z,,:,e} P={ <assembler program>-<data segment><code segment> <data segment> -><data segment><data item><nl>s <data item>-><data name ><data type><data size> <data name>-<symbol set < data type>→ DWDBDL < dala si∠e>→< number set> <code segment>=<code segment ><code item><nI>8 <code item>><control group>k<shift and rotate group>k<logical group>arithmetic group >input and output group><interrupt group> <control group>-<address symbol><<control instruction><condition symbol><symbol set> 110 symbol set>=[a-zA-Za-ZA-Z0-91 <address symbol:>-<symbol set>: c <control instruction>- jumplcallrcturn Condition symbol>ZNZ,C,NC, E shin and rotate group >-<address symbol>< shill and rotate instruction><register set> 115 shift and rotate instruction>-> srO/srl srxsrasIOsll slx sarl <register set>-s0l sl s2 s3 s4 s5 s6)s7 <logical group>- <address symbol><logical instruction>register sct>, <opcrand2> logical instruction>- loadJandor xor <number set>=([1-9][0-9]*)0 120 <operand2>-<register set>number set <arithmetic group >-><address symbol>< arithmetic instruction><register set>, operand2> arithmetic instruction>- addaddcy/sub/subcy Input and output group>- <address symbol> input and output instruction><register set>, operand2> 125 <input and output instruction?input output interrupt group>-><address symbol><interrupt instruction><interrupt mode> interrupt instruction> interrupt returni <interrupt mode>- enable disable <nb>→[ orrin]+ 130 3 国武技论文在线 http:/www.paper.edu.cn S=<assembler program> 在前面的描述文法中,G表小的是一个编详程序的一个文法,N是非终结符集合,T是 终结符集合,P是汇编语言文法描述集合,S是廾始非终结符。它是一个基木的汇编程序框 架,在这个框架的基础上,我们可以丰富和优化这个基础结构去满足我们特殊的需求。例如 135 Loopl: Load s7 init shifter reg Loop2: Output s7, 04 SLO hift left with o Jump nz, loop2 goto loop2 when s7>0 Jump loop 140 这是·个简单的汇编语言程序,如果我们需要加个乘法运算指令mul我们只是需要在 < arithmetic instruction>中添加终结符mul,还有在T中添加mu就可以了。如果我们需要把 位操作的单操作数改成双操作数只需要把< shift and rotate group>→< address symbol<shit and rotate instruction>< register set>替换成< shift and >- <address symbol>< shift and rotatc instruction>< srcgistcr sct, operand2>就可以了。如果我们需要调整汇编语言的机构 145添加堆栈段,我们只是需要把< assembler program→< data segment>< code segment>替换成 < assembler program>→< stack segment>< data segment< code segment>,然后我们就定义 stack segment>的文法。 完成了词法分析,语法分析以后,最后就是需要把汇编程序转换成汇编指令系统序列 木文采用的是映射机制来完成这一过程。我们首先必须建立两张映射表,一张是符号与信号 150量映射表,一张是信号量组合编码表。我们以一个16位的逻辑指令为例说明这两张表的作 用。如表格1,表示的是一个16位逻辑指令的格式,第1位到第§位表示指令的操作码, 第6位到箐8位表示寄存器编号,第9位到第l位可能表示寄存器编号,第9位到第16 位可能表示一个常数。根据逻辑指令的文法规则检索符号与信号量映射表,査找汇编程序符 号对应的信号量进行替换。如果编译过程中不清楚某些符号的位数可以检索信号量组合编码 155表,比如说岀现一个常量,可以根据表中的佶进行相应的编码。 表1:16位逻辑指令格式 Tab I: the Format of 16-bit Logic Instruction 11111xxxYYYk 160 表2:符号与信号量映射表 Tab 2: map of symbol and signal 符号表 信号量表 LOAD 00000 AND 00001 OR 00010 XOR 00011 000 001 010 l00 101 l10 S7 4 国武技论文在线 http:/www.paper.edu.cn 表3:信号量组合编码表 Tab 3: Combination Table of signals 属性 位数 <register set> <logical instruction> 170 指令系统硬件实现形式 通过汇编编译系统完成目标汇编程序代码的编译以后,我们就得到了汇编程序指令序列 集合。现在,编译系统需要把得到的汇编程序指令序列和微处理器连接起米,才能让微处理 器执行汇编程序指令序列。有两种实现方式:一种是采取时序部件,另一种是采用组合逻辑 部件。时序部件是根据时钟事件和地址寄存器的值,向微处理器发送汇编程序指令序列;组 175合逻辑部件是根据地址寄有器值的变化,向微处理器发送汇编指令序列。两种方式都有各自 的优点和缺点。这两种部件都需要把汇编稈序指令序列嵌入到部件中。所以编译系统在完成 编译以后,应该根据用户的需求自动生成所需要的程序存储部件。 跨平台指令系统的研究 跨平台使应用程序在不同的硬件设备上的应用。在硬件水平上设计跨平台操作,有助于 180汇编程序指令序列可以在不同的设备上运行,增加指令序列的可移植性。随着网终的发展, 各种于持设备的应用,增强指令序列的可移植性变的比较强烈。在现在社会的跨平台应用主 要是通过软件实现,比如说JAVA平台。相对于软件基础上实现跨平台,在硬件水平上实现 跨平台有速度上的优势,降低了软件系统结构的复杂度,从而降低了对硬件性能需求的,有 助于指令序列在不同的使件设备的应用,有利于将来的网终资源合理的分配与利用,比如说 185让很庞大的程序分割成数小段在网络主机上分别联合计算。实现使件水平的跨平台操作只是 需要在微处理器和指令序刎的中间加上一个指令映射部件(如图1)。把标准的指令序列转 化成为微处理器需要的指令序列,让后在微处理器中执行。例如,16位指令序列在32位微 处理器上运行,假定指令标准设定前者的指令集合是后者指令集合的子集。那么就可能 对应的信号量编码,那就可以一一进行替换,指令替换,寄存器替换,常量替换等。就可以 190实现16位指令序列跨平台的应用。 G Instructions llow Mapping instructions low 图1:硬件水平上跨平台模犁 Fig 1: Cross-Platform Based on Hardware Level 结构设计 结构设计是微处理器设计的核心设计,是其他各个部件设计的基础。结构设计的好坏直 接影响整个微处理器设计的成败。微处理器结构设计的日标是,维护简单,加减指令容易, 195修改内容少,尽量的保持微处理器框架结构的稳定不变,区域化修改。在这个框架体系中很 容易的整合新指令,而不影响其他指令的执行,增强指令之间设计的独立性。不仅仅是简单 的逻辑指令,还包括控制流指令在内的所有指令[6] 国武技论文在线 http:/www.paper.edu.cn 在大部分微处理器结构设计思想中,控制单元是微处理器结构中的核心部件,它控制着 所有其他的微处理器部件的工作状态。在传统的微处理器结构设计中,控制单元的设计是徼 200处理器设计中最为复杂困难的部分之一。控制单元的实现机制就目前来说冇两种选择:一种 是有限状态机(FSM),另一种是控制字(CW)。有限状态机方式控制灵活,结构简单清 晰,设计方案相对固定,容易构成性能良好的冋步时序逻辑模块,程序层次分明,可读性好 在高速运算和控制方面有巨大的优势。但是在微处理器部件的维护控制方面差强人意。控制 字方式维护控制灵活,容易构建微处理器框架结构ε但是没有淸晰的控制状态流,可读性差。 205在日前绝大部分的微处理器设计的控制单元都是采用两种方式中的一种,或者是对两种方式 的改造应用。如: Moore状态机和 Mealy状态机。 在本文微处理器设计中,我们决定打破传统的控制单元设计方式综合有限状态札和控制 字的结构,发挥有限状态机和控制字的优势,消除或缩小他们的弜势。在我的设计中采用的 是有限状态机的原理米控制控制字来运作部件控制状态流(如图2)。实现方式是在有限状 210态机的状态中添加一个控制字的状态,根据不同指令的需要,会提供不同数值和数量的控制 字状态流(如表4)。这样设计可以有效的控制微处理器的每一个控制状态流情况,也可以 更佳容易对各个微处理器的部件的进行控制,维护简单,增减指令便捷。 PC IR F 图2:有限状态机,S开始状态,PC地址寄存器状态,IR指令寄存器状态, CW控制字状态,E结束状态 Fig 2: FSM, Start(S), Program Counter(PC), Instruction Register(IR), Control Word(Cw), End(e) 表4:控制字样表,控制字每一位分别表示,读寄存器1,读寄存器2,AIU计算,写寄存器,读存储器, 215 写存储器,乘法器(4个时钟周期) Tab 4: Sample Table of Control Word, each bit mean, read regl, read reg2, ALU execute, write reg, read mem, ite mem, multipler(4 circles) 指令 控制字1 控制字2控制字3 控制字4 控制字5 addax 1011000 1010000 SUOvX 1111000 1110000 vainu l10000l l100001110000 l101001 1100000 1000010 1000000 在微处理器设计过程中,控制字的复杂性远远超过了的表4。由」在设计过程中设计要 220求中只是需要用两个周期完成所有指令的设计,所以就固定了控制字状态(如图3)。在编 码设计过程中,首先定义控制字表,设计好所有指令的控制字状态,如果有相同控制字状态 的指令,合并控制字状态,节约资源,图中第一行代码就是 Interrupt指令的控制字状念。在 uPc Proc中根据指令的操作码 Opcode,用哈希函数的方式找到对应指令的控制字状态,在 时钟的控制下发送不同的控制字状态,让整个有限状态机运作起来,当然可以根据实际情况 225调整有限状态杋的结枃。这样设计旳好处是整ˆ微处理器的结构比珓凊晰,控制方便,维护 方便。但是需要耗费一定的资源。 国武技论文在线 http:/www.paper.edu.cn 百日 010020000010102","10000000000000p",- Interrupt 59 020000000000001r100000000000000"); f1 begin 02 wP已Prsa: process (CLR,Es variable sel opcode : t selopcodei 4 arable ir index integer range 0 to 32: 西5 ariabile upc index integer range 0 to CLK CrCLES-1i ariabie upc clock integer range o to CLK CYCLES-IF 7 cen三七 ant noa工R :t busIR : (others =2 0); be可n 9 iE RsT ='or then 70 < SET IR (IJF 1E⊥丑deX:=0 72 upc index :=0; 73 uc卫。上 74 alge 75 ⊥cLK! e vent and clR=1·then 76 ifIR=NOP工 i then ir index.=a 78 e三e 79 sei opcode : IR(ER OPCode downto To oPcoDE)i 80 1E⊥ndex:=conw⊥ nteger(se】 opcode)十1 8I end if 82 =SE工E红E⊥ndex"2十 upe clock} 83 if upc cloek CLK CYCLES-1 then 5 upc clock : upc clock else 87 upcc2。ck:=0 end if end Ifi 90 end pr。 cess uPC Proc 92 end CU RTLA 图3:控制单元编码 ig. 3: Code of Control Unit 结论 本文设计重点是对编译系统和微处理器结构进行分析与研究。 编译系统设计过程中,主要是分析指令系统的设计,汇编编译系统物理实现和在硬件水 平上实现跨平台的实现。主要是为了对编译系统复用,还有这种指令系统下设计的软件在不 同的设备下的可移植性进行研究 微处理器设计采用的是原型开发模型,是一个构架、实验、优化、维护的循环过程。主 要目的是为了在这一个过稈中寻找一种更为优化的一个微处理器结构。成功的对样本汇编程 235斥指令序列进行测试(如图4),通过了模拟综合仿真物理实验,确定了本设计的可行性。 通过这次微处理器设计,我们积累了许多实际的设计经验。在对硬件设备进行设计时, 我们必狈充分了解我们的实验工只,比如说集成开发环境 Xilinx ise的认识, Xilinx CooRunner- II CPLD廾发板的了解,清楚的知道有多少资源可以利用。合理的设计硬件结 构,计划的完成各个组成部件。在关于吋序部件和组合逻辑部件的时钟分配问题上,尽量 240用吋序部件多用组合逻辑部件,因为组合逻辑部件不占用时钟周期。如果在吋序部件很多的 情况下,时序部件在逻辑上有顺序关系,建议采用串行组织结构。图4中指令寄存器 tester 国武技论文在线 http:/www.paper.edu.cn 和地址寄存器 bus add存在明显的先后顺序关系,所以采用的是串行。指令寄存器 tester和 寄存器单元写操作 testregin是不相关的两个部件,应该采用并行,分享时钟周期 L 畴 testa ui?27.01c4 Uc U 4 testa uout[7: 0]fo 嗯 testred12111 d testee 2[2: 01 嗯 Lest: yin[70 78 f 嘲 testregou-I[7:28 Md testregou: 2[7: 5] Irr 2b1×40002261X400X21X402261400cX6b1X4c00X2201X400X1X4 d test r115:]a184 I a100 alec a104 Md testmllepr[ 0] c4 ir[5:0] alcE I alec 3901 0XC300 bus addr7:1|∈a 腿bus_out7:0 X1.22n5 图4:样本时序图 Fig 4: Timing Diagram of Some Sample 在以后的微处理器改计中,我个人认为应该加深对在哽件水平上的跨平台研究,有利于 实现各种软件应用在不同硬件设备上的通用性,有利」各种网络设备资源联合应用提供了 种设计方式,有利于简化软件的体系结构。 参考文献 250 L1D. Antonio-Torres. A PicoBlaze-Based Embedded System for Monitoring Applications[Z Paris: Tecnologico de monterrey campus puebla, 2009 [2] Xilinx, Inc. thc Refcrcncc Manual of Picoblazc 8-Bit Microcontroller for CPLD Devices[R]. American: Xilinx, InC. XAPP387 2003 3」ⅹlinx,Inc.XilinxISELOL.2002」http://www.xilinx.com/isc 255 [4]A V. Aho, M.S. Lam, R. Sethi, J D. Ullman. Compiler: Principles, Techniques, and Tools, 2/E[M]. American Addison-Wcslcy, 2006 [5]JE Hopcroft, R Motwani, J D. Ullman. Introduction to Automata Theory, Languages, and Computation [M] American: Addison-Wesley, 2001 [6] Michael Gschwind, Dietmar Maurer Maurer. An extendible MiPS-I processor kernel in VHDL for 260 hardware/software co-design[Z]. Wien: EURO-DAC, 1996 8

...展开详情
试读 8P 论文研究-基于CPLD的微处理器软硬件设计 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
论文研究-基于CPLD的微处理器软硬件设计 .pdf 10积分/C币 立即下载
1/8
论文研究-基于CPLD的微处理器软硬件设计 .pdf第1页
论文研究-基于CPLD的微处理器软硬件设计 .pdf第2页

试读结束, 可继续读1页

10积分/C币 立即下载 >