原创 VHDL学习5

2006-3-1 08:45 7436 14 16 分类: 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 型,异步输出,输出为当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟。

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

用户1324952 2008-12-25 22:35

谢谢 写的太好了

用户394271 2008-12-11 09:42

谢谢,受益啦

用户1615276 2008-10-22 08:06

学习

huli184_389376486 2008-10-22 07:46

学习了.

用户167850 2008-10-17 10:57

受益啦。、

用户132740 2008-6-14 20:28

学习了.。。。。。。

用户132740 2008-6-14 20:27

学习了
相关推荐阅读
用户1157282 2007-09-28 10:57
电平总结2
要了解逻辑电平的内容,首先要知道以下几个概念的含义: [52RD.com]1:输入高电平(Vih): 保证逻辑门的输入为高电平时所允许的最小输入高电平,当输入电平高于Vih时,则认为输入电平为高电平。...
用户1157282 2007-09-28 10:54
电平总结1
TTL和CMOS电平1,TTL电平:    输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>...
用户1157282 2007-05-07 12:20
好久不见十分想念
最近工作一直很忙,没有了时间纪录和总结,接触了很多东西,不过都没有时间深究,就等着失业了,呵,好有时间把那些自己觉得欠下的债恶补一下。现在对“仿真”很感兴趣,今后可能大肆地写关于仿真的很多东西了,然后...
用户1157282 2006-01-20 21:00
VHDL学习4
q : bufferr integer rang 15 dwonto 0   -- 定义q为buffer类型的端口,此端口的数据类型为integer,此整数的取值范围是从15到0。注:1.intege...
用户1157282 2006-01-20 20:57
VHDL学习3
CASE语句,属于顺序语句,因此必须放在process中使用,用法如下:case expression iswhen choice => sequential_statements      -...
我要评论
7
14
关闭 站长推荐上一条 /3 下一条