新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的UART接口模块设计

基于FPGA的UART接口模块设计

作者: 时间:2011-09-21 来源:网络 收藏
2.1 发送

本文引用地址:https://www.eepw.com.cn/article/150190.htm

  发送由发送控制进程、写数据进程、并/串转换进程、状态操作进程等进程构成。其中,最主要的是发送控制进程,在发送控制进程中声明了一个6比特的变量scit_v,由它的取值(状态机)状态来控制整个发送过程。scit_v被分为高四位的sh_t和低两位的sl_,tscit_v在系统复位后被赋初值28(011100B),每来一个时钟scit_v增量,每来四个时钟sh_t增量,当sh_t为0111B时发送起始位,sh_t为1000~1111B时发送8比特的数据。下面给出的是发送控制进程和发送接收数据进程的原代码:

  -----数据发送控制进程-----

  PROCESS(clk,reset)

  variablescit_v:integerrange0to63;

  variablescit_s:std_logic_vector(tdownto0);

  BEGIN

  IF(reset=0')'THEN

  scit_v:=0;--000000

  ELSIF(clkE'VENTANDclk=1')'THEN

  IF(scit_v=27)THEN

  IF(tdEMPTY_s=0''ANDwr=1')'THEN

  scit_v:=28;--sci_v=011100

  ELSE

  scit_v:=0;

  ENDIF;

  ELSE

  scit_v:=scit_v+1;

  ENDIF;

  ENDIF;

  scit_s:=conv_std_logic_vector(scit_v,6);

  scit=TO_STDULOGICVECTOR(scit_s);

  ENDPROCESS;

  ------数据的串行发送-----

  PROCESS(sh_t)

  BEGIN

  CASEsh_tIS

  WHEN0111=>txd=0';'

  WHEN1000=>txd=din_latch(0);

  WHEN1001=>txd=din_latch(1);

  WHEN1010=>txd=din_latch(2);

  WHEN1011=>txd=din_latch(3);

  WHEN1100=>txd=din_latch(4);

  WHEN1101=>txd=din_latch(5);

  WHEN1110=>txd=din_latch(6);

  WHEN1111=>txd=din_latch(7);

  WHENOTHERS=>txd=1';'

  ENDCASE;

  ENDPROCESS;

  图3给出的是发送数据的仿真图。当CS和WR有效时写入数据55H,同时EMPTY被置成无效状态,开始数据的发送,从图中可以看到TXD上电平的变化过程,当发送结束后EMPTY变为有效。

图3 发送数据的仿真波形



评论


相关推荐

技术专区

关闭