您当前的位置:首页 > 技术风向标

基于FPGA的8085A CPU结构分析与实现

时间:2014-12-14  来源:扁平线圈电感厂家  点击:


2. 2. 2 指令系统

内部工作原理和指令系统紧密相联。本微机共有54条指令, 可分为8类, 即数据传送指令、算术与逻辑运算指令、移位指令、增量与减量指令、堆栈操作及中断指令、转移指令、子程序调用及返回指令、其它指令等。指令系统与8080 /8085的指令系统表基本一致, 标志位的变化(无辅助进位位) 与其相同, 可参见文献。

由于资源所限, 没有使用8085A 所有的寄存器及某些功能, 如B、C、D、E 寄存器等, 但是这并不妨碍本微机能够实现其绝大多数功能。从时钟周期数(状态数)来说, 比8085A 更少, 也就是说速度更快。

数据传送指令有14条(一个n表示一个8位二进制数据): 3个状态数的movah (将H 的内容存入A )、movha、mov la(将A 的内容存入L)、mova;l 4状态的mvian(将数据n存入A)、mv ihn、mv iln、mvitn(将数据n 存入t ime寄存器, 此指令为新增) ; 5 状态的movma(将A 的内容装入HL所指的地址)、movam; 4状态数的sphl(将HL寄存器的内容装入SP); 6状态的inn( n所指地址的内容给A )、outn; 4状态的cd _out(A内容给PC+ 1, 停机, 此指令为新增)等。

算术与逻辑运算指令有13 条: 3 状态的cmc( Cy符号取反)、stc( Cy置1) 、cma(寄存器A 内容取反); 4状态的addh(将A 与H 相加后给A )、adin(将A 与n相加后给A)、subh、su in、cmph(将A 与H相比较(只影响符号) )、adch(将A 与H 及符号Cy相加后给A )、sbbh、anah(将A 与H 寄存器的内容相与后给A )、orah、xrah(将A 与H 异或后给A )等。

移位指令有4条, 同8085A。增量与减量指令有4条, 只针对H、L寄存器。堆栈操作及中断指令有8条: 7 状态的pushh( HL 压入堆栈)、pushp( AF压入堆栈); 6状态的poph、popp; 8状态的rsta(重新启动); 3状态的etim e( T 寄存器使能, 此指令为新增)、eint(中断使能)、d int等。转移指令有5条: 7状态的jmpn(无条件转移至程序nn, 低位在前); 不跳转时5状态, 跳转时7状态的jnn( Z= 1时转移至程序nn)、jcn、jmn、jpen等。子程序调用及返回指令有2条: 11状态的calln (保留当前PC, 转移至程序nn, 低位在前)、7状态的ret(返回)。其它指令有4条: 3状态的nop、c lrF(标志寄存器清零,一体成型电感 此指令为新增)、clrA (A 清零, 此指令为新增)、hlt等。

状态数的计算, 若本次指令的前面一指令为3状态数时, 本指令将会减少1 状态。如: movha,adin; 若第1指令movha前没有其它3 状态指令时,它是3个状态, 而adin会减少1状态, 由原来的4状态变为3状态。再如: mov la, movha; 则后一状态由3状态变成2状态。其余类似(但不包括rsta)。

2. 2. 3 工作原理

由图1可知, 不同的子模块一共有20个, 每个模块用VHDL程序来实现, 最后用元件例化语句构成总模块。下面以设计算术逻辑部件模块c_alu及控制模块c_con为例简要介绍一下思路。

( 1)算术逻辑部件c_alu。

算术逻辑部件c_a lu非常占用FPGA的逻辑单元log ic cells, 需要尽量优化。S3- S0为控制ALU 进行加减、逻辑或移位运算的选择信号, 一共可得到16种运算, 这里用了13种: 6种算术、3种逻辑运算和4种移位指令。如加法、减法、加1、减1、带符号位加法、带符号位减法; A 或B、A 与B、A 异或B; A 左移、A右移、A 带Cy 左移、A 带Cy右移等。另外, ALU 的运算直接影响到符号位的变化, 运算结果存入标志寄存器( FR)。有关alu的运算多为4个状态。

( 2)控制模块c_con。

占用FPGA 的逻辑单元log ic ce lls最多的是控制模块c_con。在参考文献[ 3] 中的思路不再适合于稍大型的CPU 设计, 但它是理解如何控制CPU 信号的一个起点。对于一条指令应该细化到每一个步骤及每一位, 而不再是以一个控制字的方式去实现。以指令movah为例, 首先把PC 值送入MAR 寄存器, 此为状态s0, 这时起作用的是Lmar; 然后在状态s1时, PC值加1, 将存储器单元中的内容读入到IR, 这时Cpc、E ram、Lir起作用, Lmar不再起作用, 需要置0; 接着在状态s2时, 对IR 寄存器中的指令进行译码, 所有的操作指令都是在此状态译码(不包括rsta)。对于3状态指令, 不保存指令, 直接执行, 然后跳转到状态s1。因此对于下一条指令来说, 其状态数减1。

指令中状态数最多的是子程序调用ca lln指令。

C alln指令要保存PC 值到SP- 1及SP- 2中, 然后跳转到子程序。考虑到返回指令ret执行后, PC 要重新在原位置执行, 那么存入SP中的PC 值应该是在得到其指令后加3。对PC 进行单独加3是一种思路, 但需要另外耗费资源, 并且增加状态。这里采用了先把ca lln后的nn存入16位的加1 /减1 地址锁存器, 然后保存PC 到SP,扁平型电感 再将nn 赋值给PC, 跳转到子

大电流电感

PCB设计中的器件封装问题器件封装的构建是 PCB 设计中的一个重要环节,小小的一个错误很可能导致整个板子都不能工作以及工期的严重延误。常规器件的封装库一般 CAD 工具都有自带,也可以从器件原厂的设

360度全景系统摄像头提供倒车辅助 到目前为止,业内一直使用鱼眼摄像机技术来为驾驶员提供倒车辅助,其可从鸟瞰角度显示汽车图像及倒车路径。这使得驾驶员更好地预估他们周围物体的距离。但我们发现360度全

7个pin的MOS管,为什么要在图中红框中设置一块sol针对于这种7个pin的mos管,为什么要在图中红框中设置一块soldmask?这样做是为了散热吗?还有其他的注意事项吗?MOS管的下面是否不能配置器件,请各位大神解一下惑

注塑加工厂


上一篇TMS320C31和80C196双CPU构成的高速实时控制

下一篇基于DSP技术的商品电子防窃(EAS)系统设计


  
  温馨提示
网站首页 | 产品展示 | 科技前沿 | 行业资讯
本公司专业研发、设计、生产、销售贴片电感、插件电感、功率电感、大电流电感、扁平线圈电感、一体成型电感。
专业电感生产制造商,品质优异、交期快。
在线客服
热线电话