欢迎来到天天文库
浏览记录
ID:29694313
大小:492.50 KB
页数:9页
时间:2018-12-22
《基于FPGA的串口控制器设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于FPGA的串口控制器设计简介使用硬件描述语言(HDL)设计和开发验证FPGA成为当前的主流因素。使用行为级描述不仅增加了产品的设计效率,也在设计中有独特的验证方式。目前最流行的HDL语言为Verilog和VHDL。这篇文章将会举例说明用Verilog语言设计和验证数字异步串行收发器UART。UART介绍通用异步串行收发器UART包含两个独立的VHDL模块。一个模块实现发射功能,另一个实现接收功能,发射和接收功能模块在顶端设计时组合到一起使用,接收和发射的组合是通信通道所必需的。数据写入发射器,从接收器读出,所有的数据以二进制8字节的信号通过CPU接口。地址映射的发射机和接收机通道
2、可以很容易的在设计顶层的接口构建。两者共用一个称为mclkx16的主控时钟,在每个模块中mclkx16被分成独立的波特率时钟。UART的功能概况UART的基本功能概况见下表。在左边显示传输保持记录,移位记录,传输控制时钟,全部集中在发射机的txmit端。在右边显示接收移位寄存器,接收记录和控制逻辑时钟,所有都包含在接收模块的rxcver端,这两个模块有单独的输入和输出的控制线路,只有双向的数据总线,主时钟和复位线由两个模块共享。顶层UART系统的I/O功能描述UART时序图下面显示的是写入传输寄存器的数据是如何被加载到移位寄存器,并在波特率时钟的上升沿,转向txd输出端。发送器主控时
3、钟mclkx16被分频到合适的波特率时钟称为rxclk,它等于mclkx16/16。数据以平行的形式锁存模块,而转向以串行格式在波特率时钟频率下向tx端输出。数据转到tx输出遵循UART数据格式如图6所示。发送器行为描述发送器等待新的数据写入模块,当新的数据写入发送序列模块时数据初始化。被写入的数据以并行方式传送到发送模块然后被转化成串行数据帧从tx输出。当没有传输序列的地方,tx输出是高电平。发送器实现Verilog的内部信号被称为wire和reg两种数据类型,WIRE类型的信号用于连续的作业,也称为组合语句,REG类型的信号用在分配Verilog里的always时钟,常常使用逻辑
4、顺序的分配,但不是一定的,进一步解释见Verilog参考书,模块内部信号的数据类型如表3所示。我们现在已经通过了所有必要的声明,并已作好准备,看看实际执行,用硬件描述语言使我们以更加行为化的方式描述发送器的功能,而不是把重点放在它在门级的实际执行情况。在软件编程语言中,函数和程序将大项目分解成更具可读性,管理性,当然也可维护的部件,Verilog的函数和任务被用来当作多行的Verilog代码,其中某些输入或信号影响某些输出或变量。函数和任务的使用,通常发生在多行代码需要重复使用的设计中,从而使得设计易于阅读和维护肯定,Verilog函数,可以有多种输入,但始终只有一个输出,然而Ver
5、ilog任务可以兼得多投入,多产出,下面显示了Verilog任务,即拥有所有必要的顺序语句,用来描述发送器的转移模式。我们可以看到在移位寄存器里有2个标志位叫作tag1和tag2,在描述空闲和置位模块时产生相同的作用。使用这些Verilog工作,我们现在可以产生一个非常容易阅读的行为模型的空穴传输过程。如果txdone和txdatardy都是正确的,发送器进入负载模式。在负载模式下,进入发送模式转变,在上升沿的波特率时钟,tsr的内容转移到tx输出端。奇偶校验过程产生于tsr变化中,如下所示。模拟发送序列在写入上升沿时数据总线容量被锁存,在txclk下一个上升沿,thr的容量载入ts
6、r,低电平开始位进入tx,发送标志位显示,thr再次等待新的数据的写入。在每个发送时钟上升沿,tsr的容量被送入tx,在数据传输过程中产生奇偶校验,周期循环时奇偶校验为高电平,tx产生奇偶校验结果。接收模块主控时钟mclkx16被分频到合适的波率时钟称为rxclk,它等于mclkx16/16。串行数据为收到的rx输入模块,必须按照UART的数据格式,串行格式接收到的数据通过8位数据总线以并行格式的形式读出。接收模块行为描述根据标准异步串行UART行为标准,在连续发送时,发送保持高电平,接收器在等待闲置模式的rx端输入为低电平,在rx下降沿接收进入保持模式,现在寻求一种有效的开始位等待
7、新的数据帧的到来,如果一个有效的开始位被检测到时,接收器进入转变数据模式,在接收一个数据帧的过程中,各种校验和检查错误被执行,当一个完整的数据帧被接收,接收端返回待机模式,接收器基本运作如下所示。接收器模块的实现为了产生一个易读易操作的接收器模块,用两种Verilog任务来描述不同的接收方式,当接收在空闲状态时,其中一个Verilog任务称为空闲复位,而它需要所有必要的顺序语句来描述接收机复位条件。当接收器不在复位状态,也不在空闲状态下,在rx输入端接收的
此文档下载收益归作者所有