274FPGA通用异步收发器.docx
- 文档编号:25067322
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:16
- 大小:37.83KB
274FPGA通用异步收发器.docx
《274FPGA通用异步收发器.docx》由会员分享,可在线阅读,更多相关《274FPGA通用异步收发器.docx(16页珍藏版)》请在冰豆网上搜索。
274FPGA通用异步收发器
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
7.4FPGA通用异步收发器设计
UART简介
n
n
UART(UniversalAsynchronousReceiverTransmitter
通用异步收发器)是一种应用广泛的短距离串行传输接口
。
常常用于短距离、低速、低成本的通讯中。
基本的UART通信只需要两条信号线(RXD、TXD)就可以完
成数据的相互通信,接收与发送是全双工形式。
TXD是
UART发送端,为输出;RXD是UART接收端,为输入。
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
UART在信号线上共有两种状态,可分别用逻辑1(高电平)
和逻辑0(低电平)来区分。
在发送器空闲时,数据线应该
保持在逻辑高电平状态。
它的数据帧格式为:
STAR
T
D0
D1
D2
D3
D4
D5
D6
D7
P
STOP
起始位
数
据
位
校验位
停止位
*2007-2-12
第1页
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
UART系统FPGA接口电路
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
由于RS-232接口采用+3V-+15V表示逻辑“0”,-3V--
15V表示逻辑“1”,因此必须利用MAX232电平转换电
路将其转换为数字逻辑电平。
具体线路连接如图7-19所示,其中MAX232的7脚和8脚接
标准的9针RS-232接口,9脚和10脚接FPGA的I/O引脚。
*2007-2-12
第1页
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
UART
系统VHDL描述
n
n
n
n
n
n
n
n
n
n
n
n
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityTOPis
Port(CLK:
instd_logic;
uartin:
instd_logic;
DIVCLK:
outstd_logic;
DIVCLK2:
outstd_logic;
RxAv:
outstd_logic);
endTOP;
architectureBehavioralofTOPis
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
n
n
n
n
n
n
n
n
n
signaltempclk:
std_logic;
signaltempdivclk:
std_logic;
signalcounter:
std_logic_vector(3downto0);
signaltempdivclk2:
std_logic;
signalcounter2:
std_logic_vector(11downto0);
signaltempdata:
std_logic_vector(7downto0);
typestateis(idle,work,tobuf);
signalpresent_state:
state;
signalrxdbuf:
std_logic;
signalrxdin:
std_logic;signalrecclk:
std_logic;
signaldata_buf:
std_logic_vector(7downto0);
signalcnt:
std_logic_vector(3downto0);
n
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
n
n
n
n
n
signaldivcnt:
integerrange0to86;
signalbitpos:
integerrange0to7;
componentBUFG
port(I:
instd_logic;O:
outstd_logic);
endcomponent;
componentIBUF
port(I:
instd_logic;O:
outstd_logic);
endcomponent;
n
n
n
n
n
begin
u0:
IBUFportmap(I=>uartin,O=>rxdbuf);
u1:
BUFGportmap(I=>rxdbuf,O=>rxdin);
u3:
BUFGportmap(I=>clk,O=>tempclk);
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
n
n
n
n
n
n
n
n
n
n
--产生16倍波特率的时钟T=542.5ns(波特率为115200)
process(tempclk)
begin
iftempclk'eventandtempclk='1'then
if(counter>="1101")then
counter<="0000";
tempdivclk<=nottempdivclk;
else
counter<=counter+'1';
endif;
endif;
endprocess;
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
n
n
n
n
n
n
n
n
n
n
n
divclk<=tempdivclk;
process(tempdivclk)
begin
iftempdivclk'eventandtempdivclk='1'then
casepresent_stateis
whenidle=>
RxAv<='1';
ifrxdin='1'then
cnt<="0000";
present_state<=idle;
else
cnt<=cnt+'1';
ifcnt="0111"then
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
n
n
n
n
n
n
n
n
n
n
present_state<=work;
cnt<="0000";
bitpos<=0;
endif;endif;
whenwork=>
ifcnt="1111"then
cnt<="0000";
data_buf(bitpos)<=rxdin;
bitpos<=bitpos+1;
ifbitpos=7then
bitpos<=0;
present_state<=tobuf;
n
endif;else
接下页
第1页
*2007-2-12
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
n
n
n
n
n
n
n
n
n
n
cnt<=cnt+1;
endif;
whentobuf=>
tempdata<=data_buf;
RxAv<='0';
present_state<=idle;
endcase;
endif;
endprocess;
endBehavioral;
*2007-2-12
第1页
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 274 FPGA 通用 异步 收发