注:文章内容为本人学习笔记,若有错误欢迎指正或补充。
1,串口
串口即通用异步收发器,异步串行通信口,全双工,串口是一种通信方式,其内部有不同的协议,常见的通信接口有RS232,RS485,RS499,RS423,RS422。
串口的通讯方式,主机和从机分别都有两个端口Rx和Tx,主机的Rx与从机的Tx相连,主机的Tx与从机的Rx相连。
串口的接口即com口又叫DB9,有9个引脚,其中第二和第三引脚最重要,分别是RxD与TxD引脚(公头的第二引脚为RxD,第三引脚为TxD,母头的第二引脚为TxD,第三引脚为RxD)。
2,Rs232串行通行接口
因为串口是串行通信,所以发送端要先把并行数据改为串行数据后在发送,接收端在接收到串行数据后改为并行数据,在传入内部。
串口是以针结构的方式发送数据,每一帧有8bit的数据,一个起始位和停止位,一共10个bit的数据,没有数据传输时Rx与Tx都会处于空闲状态,空闲状态为高电平,起始位为低电平,停止位为高电平。
串口发送或接收一个数据所要的时间为一个波特,每个波特所需要的时间=1/波特率s ,每个波特所需要的计数周期=时钟频率/波特率 。
3,亚稳态
在实际的电路中,电信号的跳变不是瞬间改变的,会有个渐变的过程,当系统时钟刚好采集到渐变处,会使输出信号产生震荡或毛刺,在震荡或毛刺后会产生随机的电平,不与输入有关,这就是亚稳态。
亚稳态产生的原因:在时钟采集前一段时间与采集后一段时间,数据要保持稳定,前一段时间为建立时间Tus,后一段时间为保持时间Th,在时钟采集处到发生毛刺电这段时间为寄存器延迟时间Tcd,毛刺发生期间为决断时间tment。
消除亚稳态的方法:使用寄存器,因为寄存器本身就具有稳定亚稳态的作用,信号每经过一个寄存器其亚稳态的绝断时间就会缩短,当决断时间小于一个时钟周期时,它的影响就会很小。每一个寄存器可以缩短70/80%的决断时间。单bit信号从高速到低速时钟一般要经过两个寄存器,在多加效果就不会很明显。单bit信号从高速到低速时钟就不能用寄存器的方式,因为会漏数据,要使用脉冲同步或握手信号的方法进行数据同步。多bit信号进行跨时钟域时,要经过格雷码编码,在使用寄存器,FIFO,RAM来进行数据同步。
4,新函数介绍
integer函数用于定义变量,寄存器数据类型,位宽为主机的字的位数,最小为32位,默认有符号类型。
task函数,类似c语言中的非主函数,需要调用才运行内部代码,用法如下。
//name为函数名称,data为输入信号
tase name (int data);
/*
内部代码需要调用才能运行
*/
//函数结束标志
endtase
//在initial中调用,程序最开始的时候调用一次
initial
begin
name(data1);
end