原创 VHDL学习五

2007-3-1 09:34 2435 4 4 分类: FPGA/CPLD

三态门

三态门的应用 三态门的有很多的实际应用,比如数据和地址BUS的构建,RAM或堆栈的数据端口设计等。


三态门的设计 当输入输出状态时,dataout<=datain;而当高阻状态的时候,则dataout<="ZZZZZZZZ"


注:


尽可能不用'Z'做比较值,表达式和操作数。否则综合会出错。


VHDL虽然不区分大小写,但是高阻态已经定义为大写'Z'。


大多数FPGA器件内部都无法构成三态门,所以只能用多路选择器的结构来实现,有的甚至在端口都无法实现。



双向端口设计

双向端口inout 模式的设计也必须考虑到三态的使用,其实是高阻的使用。这是因为,当双向端口在完成输入的时,必须使原来呈输出模式的端口呈高阻态,否则,待输入的外部数据势必会与端口处原有电平发生“线与”。


状态机


自定义数据类型语句:


TYPE 数据类型名 IS 数据形式 OF 构成数据形式的数据元素的类型;


TYPE 数据类型名 IS (数据元素描述) ;


其中数据形式包括:Array type ,Enumeration type ,Interger type,Record type,Time type,Real type


构成数据形式的元素类型包括:bit, Boolean ,character ,std_logic


状态符号化,表征每个状态的二进制数用文字符号来表示,最左边的为‘0’或“0000”向右依次加1


 


SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;


SUBTYPE 没有新定义数据类型只是对已有的数据类型加以约束,引进SUBTYPE的益处在于:


1.         提高可读性和易处理性;


2.         其实质的好处在于提高综合的优化效率,即综合器可以根据子类型所设的约束范围有效的推出参与综合的寄存器的数目等优化措施。


 


般有限状态机的设计:


一、说明部分:




说明部分在architecture与begin之间;


定义枚举型数据形式描以述状态;


把状态变量定义为信号便于信息传输,状态变量数据类型和描述状态的数据类型一致,因此只能在状态中取值。

二、主控时序(REG)进程,在时钟驱动下负责状态转换current_state<=next_state,它不负责状态的取值。主控时序进程中必须包含一个时钟敏感信号。next_state的内容由其他进程实际情况决定。


三、主控组合(COM)即状态译码进程,由当前状态(current_state)进入相应状态(所谓进入相应状态就是做此状态下规定的行为),并和外部输入state_input共同作用决定下一个状态next_state和对外发出控制信号comb_outputs,直至下一个时钟脉冲到来进入新一轮的状态周期转换。


四、辅助进程:



一些算法进程; 
配合状态机工作的其他时序进程; 
为稳定输出的数据锁存器等。

五、状态机的分类


Moore 型/Mealy 型


 


Moore 型,同步输出,输出为当前状态的函数,输入发生变化还须等待时的钟到来,时钟使状态变化时,输出才变化。


Mealy 型,异步输出,输出为当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条