新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于串口通讯的Verilog设计

基于串口通讯的Verilog设计

作者: 时间:2012-09-03 来源:网络 收藏

FPGA串口模块是将由RS-485发送过来的数据进行处理,提取出8位有效数据,并按异步的格式要求输出到MAX3223的12脚。FPGA选用Xilinx公司的Spartan II系列xc2s50。此部分为该设计的主体。如上所述,输入数据的传输速率为700k波特率。为了使FPGA能够正确地对输入数据进行采样,提高分辨率能力和抗干扰能力,采样时钟必须选用比波特率更高的时钟,理论上至少是波特率时钟的2倍。在本设计中选用4倍于波特率的时钟,利用这种4倍于波特率的接收时钟对串行数据流进行检测和定位采样,接收器能在一个位周期内采样4次。如果没有这种倍频关系,定位采样频率和传送波特率相同,则在一个位周期中,只能采样一次,分辨率会差。比如,为了检测起始位下降沿的出现,在起始位的前夕采样一次之后,下次采样要到起始位结束前夕才进行。而假若在这个周期期间,因某种原因恰恰使接收时钟往后偏移了一点点,就会错过起始位。造成整个后面位的检测和识别错误。针对本设计,FPGA的软件共分了三个模块:

1.时钟分频模块。模块的功能是用来产生所需要的数据采集时钟和数据传输时钟。系统主频是40M的。数据采集时钟是2.8M的,发送时钟是11.2k。

2.提取数据模块。由RS485发送过来的数据共有25位,其中只有8位是有效数据。为了发送这8位有效数据。必须先将其提取出来。提取的办法是这样的:通过连续检测到的16个高电平和一个低电平。判断8位有效数据的到来。然后按照串行数据传输的格式,在加上起始位和停止位后,将其存储于输出缓冲寄存器中。在这里,我们的串行数据输出格式是这样规定的,一位起始位,八位数据位,一位停止位,无校验位。

3.串行数据输出模块。这一模块相对比较简单,波特率选为11.2k,模块的功能是在移位输出脉冲的作用下,将输出缓冲寄存器中的数据移位输出。

MAX3223是实现电平转换的芯片。由于RS-232c是用正负电压来表示逻辑状态。与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在RS-232与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。MAXIM公司的MAX3223是为满足RS-232c的标准而设计的具有功耗低、波特率高、价格低等优点,外接电容仅为0.1uF或1uF,为双组RS232收发器。由MAX3223的12脚输入的数据,经过电平转换后由8脚输出,再经过DB9的TxD端输出,由PC机接收并做后续处理。

3 系统软件设计

FPGA模块是本设计的主体,使用硬件描述语言进行编写,本段代码共有两个子模块,分别实现提取八位数据和串行数据发送的功能。

下面是verilog源代码

module SIMO(din,clk,rst,dout_ser);

input din; //串行输入数据

input clk; //时钟信号

input vat; 复位信号

reg[7:0] indata_buf; //输入缓冲寄存器,存提取的有效位

reg[9:0] dout_buf; //输出缓冲寄存器,加了起停位

output reg dout_ser; //串行数据输出

reg nclk; //提取八位有效数据的采样时钟.是4倍于波特率的时钟

reg txclk; //发送数据时钟。发数据取11.2k的波特率

integer bitpos=7; //当前位

parameter s0=0,s1=1,s2=2,s3=3;

reg[2:0]state;

reg[4:0]counter; //用来计算报头报尾中1的个数

reg tag,tag1;

reg[2:0]cnt3;

reg txdone=1'b1;//一个字节数据传输完毕标志

*********提取有效数据位并按串行通讯格式装载数据********

always@ (posedge nclk or posedge rst) begin

if(rst)

begin

state=0;

counter=0;

tag1=0;

tag=0;

indata_buf=8'bz;

dout_buf=10'bz;

bitpos=7;

cnt3=0;

end

else case(state)

s0:begin

tag=0;//表示数据没有装好

if(din)

begin

counter=counter+1;

state=s0;

if(counter==15)//如果检测到16个1则转入s1状态检测接下来的是不是0

begin

state=s1;

counter=0;

end

end



关键词: Verilog 串口通讯

评论


相关推荐

技术专区

关闭