寄存器传输语言详解
电子系统中各单位之间是需要互相通信、互相协调,才能够完成既定的功能,而在数字系统各模块之间的信息传输,以及模块内部各子模块之间的信息加工、存储与传输操作,不能用组合电路和时序电路中采用的方法进行描述,必须采用更高级的描述方法,方法之一是寄存器传输语言。
寄存器的功能十分重要,CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过"端口"交换数据,外部寄存器具有寄存器和内存储器双重特点。
段寄存器(ES,CS,SS,DS,FS,GS)和变址寄存器(SI,DI)是配合使用访问段数据的,指针寄存器(BP,SP)是用来操作堆栈的,BP指向栈的基址,SP则永远指向栈顶。
另外指令指针EIP存放的是要执行的下一条指令在代码段里的偏移量,在实方式下,每个段的最大范围都是64K,所以EIP的高16位都是0。
RTL寄存器传输语言就是既表示了寄存器传输操作,又和硬件之间有简单对应关系的一种方便的设计工具,是描述各模块内部和模块之间连接关系的一种很好的方法。
数字系统中最常用到的微操作可分为四类:
1、寄存器传送微操作
它可把二元信息从一个寄存器传送到另一个寄存器,在操作中其信息的内容不会发生改变。
2、算术运算微操作
它可对存储在寄存器的数字量进行加法、减法等算术运算。
3、逻辑运算微操作它可对存储在寄存器的二元信息进行与、或和非等逻辑运算。
4、移位微操作
它可完成寄存器中二元信息的移位操作。
1、寄存器间相互传送操作
在寄存器传输语言中,用大写英文字母表示寄存器,也可以用图形表示。还可以把寄存器的每一位都表示出来,其中方括号内是每一位的编号。
无条件传送语句
无条件传送语句的格式为:A B。其中,箭头表示传送方向,B称为源寄存器,A称为目的寄存器。传送操作是一个复制过程,不改变源寄存器的内容,无条件传送操作一般与时钟无关,而是在一定条件下发生。
条件传送语句
传送条件常由控制器给出的逻辑函数规定,其中"!"和"*"是条件语句专用符,"!"称为间隔符,其意义是间隔符左边和右边的数据之间没有联系。"*"是条件语句的连接符,"*"号右边是传送条件。
行为级和RTL级的区别
RTL级,register transfer level,指的是用寄存器这一级别的描述方式来描述电路的数据流方式;而Behavior级指的是仅仅描述电路的功能而可以采用任何verilog语法的描述方式。鉴于这个区别,RTL级描述的目标就是可综合,而行为级描述的目标就是实现特定的功能而没有可综合的限制。
行为级是RTL的上一层,行为级是最符合人类逻辑思维方式的描述角度,一般基于算法,用C/C++来描述。从行为级到RTL级的转换,一般都是由IC设计人员手工翻译。
这个过程繁琐,工作量很大,特别是随着数字系统的复杂性提升,这样的纯手工"翻译"过程容易出错,且使得开发周期变长。一批高级综合工具应运而生。如Menter Graphics的高层次综合工具Catapult C Synthesis。能够将数字系统的行为级描述映射为RTL设计,并满足给定的目标限制。从层次由上到下,数字系统的设计过程为: Idea-》行为级描述-》rtl描述-》门级网标-》物理版图
行为级的描述更多的是采取直接赋值的形式,只能看出结果,看不出数据流的实际处理过程。其中又大量采用算术运算,延迟等一些无法综合的语句。常常只用于验证仿真。
RTL级的描述就会更详细一些,并且从寄存器的角度,把数据的处理过程表达出来。可以容易地被综合工具综合成电路的形式。
行为级描述可是说是RTL的上层描述,比RTL更抽象。行为描述不关心电路的具体结构,只关注算法,有行为综合工具,可以直接将行为级的描述综合为RTL级的,比如Behavioral Compiler。
在硬件设计中有一句著名的话:thinking of hardware。RTL在很大程度上是对流水线原理图的描述。哪里是组合逻辑,哪里是寄存器,设计者应该了然于胸。组合逻辑到底如何实现,取决于综合器和限制条件。
rtl级可以理解为,可以直接给综合工具生成你要的网表的代码,而行为级则不行。比如real可以用于行为级,而不能用于rtl级!
行为级 is for testbench for modelling. RTL is for synthesis,语法块如果可以被综合到gate level,就是RTL的。否则就是behavior level的。同样是for语句,如果循环条件是常数,就是RTL的,如果是变量,就是behavior的。
行为级不考虑电路的实现,不考虑综合RTL级描
寄存器 相关文章:
- 什么是LED驱动时序?LCD背光驱动程序设计(04-26)
- LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码(04-25)
- wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点(04-26)
- ARM微处理器助记符指令及其功能描述(04-30)
- 布线工程师如何充分“掌控”时钟信号?(02-21)
- FPGA组成、工作原理和开发流程(10-13)