陳慶瀚 MIAT嵌入式系統實驗室 國立中央大學資工系 2009年11月12日

Slides:



Advertisements
Similar presentations
计算机网络与通信 03 信息安全 李 艇.
Advertisements

什么是SOPC: SOPC是英文System On a Programmable Chip的缩写,称为片上可编程系统。SOPC将传统的EDA技术、计算机系统、嵌入式系统、数字信号处理等融为一体,综合了各自的优势,且在结构上形成一块芯片。 为什么用SOPC:SOPC是现代电子技术和电子系统设计的发展趋势,建立了电子系统设计的新模式。用户利用SOPC开发平台,自行设计高速、高性能的DSP处理器、特定功能的CPU及其外围接口电路,创建结构最为简洁的电子系统。
第五章 输入输出系统 5.1 概述 5.3 接口 5.3 系统总线 5.4 直接程序传送方式接口 5.5 中断方式与接口
串列I/O(UART) 20010/12/08.
《 E D A 技 术》 课 程 教 学 讲授:伍宗富 湖南文理学院电气与信息工程学院 2017年3月19日星期日.
第4章 VHDL设计初步.
序列埠通訊.
第3章 计算机网络体系结构.
通信技术基础 第1章 通信与通信系统的基本概念 王钧铭 1.1 通信的概念 1.2 通信系统 1.3 通信方式 1.4 信道和传输介质
EPF10K10TI144-4晶片燒錄.
协议宏串行通信 陈建瓴.
第三章 组合逻辑电路 第一节 组合电路的分析和设计 第二节 组合逻辑电路中的竞争与冒险 第三节 超高速集成电路硬件描述语言VHDL
題目:十六對一多工器 姓名:李國豪 學號:B
第1章 FPGA概述 1.1 FPGA的发展历程 1.2 FPGA的基本原理 1.3 FPGA的设计方法 1.4 FPGA的设计流程
CH.2 Introduction to Microprocessor-Based Control
串行通讯的概念 串行通讯:一条信息的各位数据被逐位按顺序传送 的通讯方式称为串行通讯。
第7章 常用数字接口电路.
VHDL數位電路實習與專題設計 文魁資訊-UE301
嵌入式系統與實習期末小專題 -嵌入式GPS移動監視系統
VHDL數位電路實習與專題設計 文魁資訊-UE301
內容:串列傳輸 實作:Arduino to PC 、 Arduino to Arduino 簡報:廖崇義
8.9二进制振幅键控(ASK) 调制器与解调器设计
数据通信与计算机网络技术.
计算机组成与系统结构 陈泽宇 副教授.
科学网 李浪 第4章 物理层 科学网 李浪.
第八章 80C51单片机的串行通信 主要内容:本章主要介绍80C51串行通信相关知识,包括串行通信基本概念,80C51单片机的串行口及其工作方式,以及单片机在双机或多机通信中的应用。
VHDL 硬體描述語言 數位電路設計實務 第六章 函數副程序以及套件程式庫.
EDA原理及应用 何宾
使用VHDL設計—4位元減法器 通訊一甲 B 楊穎穆.
EDA原理及应用 何宾
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
8051's UART mode0 output 通訊二甲 B 洪紹凱.
UART口的第一次接触 MCU起航 QQ:
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
使用VHDL設計—向上&向下計數器 通訊一甲 B 楊穎穆.
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
第15章 串行通信及接口电路.
使用VHDL設計--Moore Machine
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
第二章 常见网络电缆 以太网常见缆线 设备间接口电缆 用户线.
串行通讯的概念 串行通讯:一条信息的各位数据被逐位按顺序传送 的通讯方式称为串行通讯。
使用VHDL設計-多工器/解多工器 通訊一甲 B 楊穎穆.
第12章 图像边缘检测器的设计与分析 12.1 系统设计要求 12.2 系统设计方案 12.3 主要LPM原理图和VHDL源程序
第五章 VHDL设计基础 本章重点: 本章难点: VHDL程序结构 VHDL的基本数据类型 VHDL的基本描述语句 基本组合逻辑电路设计
第六章 VHDL设计共享.
第五章 VHDL主要描述语句.
義守大學電機工程學系 陳慶瀚 第4章 VHDL Sequential語法 義守大學電機工程學系 陳慶瀚
使用VHDL設計—4位元ALU電路 通訊一甲 B 楊穎穆.
第九章 MCS-51串行接口 9.1 串行数据通信概述 通 信 并行 一、并行通信和串行通信 串行 串行通信 数据是一位一位传送的
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
抢答器 设计一个2人抢答器。要求如下: 设计任务 1.两人抢答,先抢为有效,用发光二极 管显示是否抢到优先答题权。
5-6 串列埠模式0輸出埠擴充實習.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
數位邏輯設計 VHDL.
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
使用VHDL設計-8x1多工器 通訊一甲 B 楊穎穆.
自停式向下計數器 通訊一甲 B 楊穎穆.
第7章 VHDL设计应用实例 7.1 8位加法器的设计 7.2 分频电路 7.3 数字秒表的设计.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
K60入门课程 03 首都师范大学物理系 靳熙芃.
可變式計數器 通訊一甲 B 楊穎穆.
第六章 S3C2410的串口UART及编程 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2009年10月22日
Programmable Logic System Design
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
第七章 基本逻辑电路设计.
Programmable Logic System Design
Presentation transcript:

陳慶瀚 MIAT嵌入式系統實驗室 國立中央大學資工系 2009年11月12日 ESD-07 UART控制器設計 陳慶瀚 MIAT嵌入式系統實驗室 國立中央大學資工系 2009年11月12日

Synchronous Serial Standard

Asynchronous Serial Standard Universal Synchronous/Asynchronous Receiver Transmitter (USART or UART)

Universal Asynchronous Receive Transmit Asynchronous Serial Standard

RS-232 The UART input/output uses 0V for logic 0 and 5V for logic 1. The RS-232 standard (and the COM port) use +12V for logic 0 and –12V for logic 1. To convert between these voltages levels we need an additional integrated circuit (such as Maxim’s MAX232).

EIA Terminology 􀂄 DTE – Data terminal equipment(computer) 􀂄 DCE – Data communication equipment(modem) 􀂄 RxD – Receiver data 􀂄 TxD – Transmitter data 􀂄 DCD – Data carrier detect (valid modem connection) 􀂄 DTR – Data terminal ready (Computer on and software is ready) 􀂄 DSR -- Data set ready (Modem on and software ready) 􀂄 RTS – Request to send (DTE wants to send character) 􀂄 CTS – Clear to send (DCE acknowledge to RTS from DTE) 􀂄 RI – Ring indicator from telephone

UART Communication Protocol 在UART的傳輸協定中,起始位元固定為LOW,停止位元固定為HI,所以接收端的動作是一直不斷的檢查傳輸線的狀態。當傳輸線上的信號一直為HI就表示沒有資料傳送;當傳輸線上的信號由HI變為LOW,即表示有資料將傳送,接收端就會開始準備接收8個位元資料,直到傳送完8個位元資料,傳送端最後會送出停止位元,並使傳輸線的信號保持為HI,以等待下一次的資料傳輸。

UART控制器架構

UART控制器I/O 訊號定義

Baud Rate for UART Baud rate的產生是由系統時脈(System Clock)除頻得到,系統時脈越高,可產生較為精確的baud rate,若以150Mhz為系統主要頻率,要產生115200的baud rate ,必須將150Mhz除以1302約為115207,其誤差率為0.006%,是相當的小的誤差。

Baud Rate for UART 在接收端的部分,為了防止雜訊干擾取到錯誤的訊號,通常會將單一資料連續取樣16次,在由所得的樣本中間第8次來判斷此筆資料是HI或LOW,因此接收端的取樣速度必須16倍於傳送端,若傳送端是115200 baud rate ,則接收取樣率為1843200(150M/82)。

Baud Rate Generator Select Bits BAUD Rate 000 38,462 001 19,231 010 9615 011 4808 100 2404 101 1202 110 601 111 300.5

UART控制器功能模組

Transmit 模組GRAFCET 建模

Receive模組GRAFCET 建模

UART Entity ENTITY UART IS PORT ( CLK : IN STD_LOGIC; RST : IN STD_LOGIC; RXD : IN STD_LOGIC; SET_RATE : IN STD_LOGIC; HIGH_RATE : IN STD_LOGIC_VECTOR(7 DOWNTO 0); LOW_RATE : IN STD_LOGIC_VECTOR(7 DOWNTO 0); TX_E : IN STD_LOGIC; TX_DATA : IN STD_LOGIC_VECTOR(7 DOWNTO 0); TXD : OUT STD_LOGIC; RX_DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ERR : OUT STD_LOGIC; RX_FINISH : OUT STD_LOGIC; TX_FINISH : OUT STD_LOGIC );

Component-based Architecture ARCHITECTURE RTL OF UART IS SIGNAL ENABLE_R_IO : STD_LOGIC; SIGNAL ENABLE_T_IO : STD_LOGIC; COMPONENT BaudRate_Generator PORT ( ..… ); END COMPONENT BaudRate_Generator; COMPONENT Transmit_Module PORT ( …… ); END COMPONENT Transmit_Module; COMPONENT Received_Module PORT ( …… ); END COMPONENT Received_Module; BEGIN M0 : BaudRate_Generator PORT MAP(….); M1 : Transmit_Module PORT MAP (….); M2 : Received_Module PORT MAP (….); END RTL;

Baudrate Generator電路設計 Select Bits BAUD Rate 000 38,462 001 19,231 010 9615 011 4808 100 2404 101 1202 110 601 111 300.5

BaudRate_Generator VHDL Model entity clk_divider is port(Sysclk, rst_b: in std_logic; Sel: in unsigned(2 downto 0); BclkX8: buffer std_logic; Bclk: out std_logic); end clk_divider; architecture baudgen of clk_divider is signal ctr1: unsigned(3 downto 0) := "0000"; -- divide by 13 counter signal ctr2: unsigned(7 downto 0) := "00000000"; -- div by 256 ctr signal ctr3: unsigned(2 downto 0) := "000"; -- divide by 8 counter signal Clkdiv13: std_logic;

BaudRate_Generator VHDL Model(2) begin process(Sysclk) -- first divide system clock by 13 if (Sysclk'event and Sysclk = '1') then if (ctr1 = "1100") then ctr1 <= "0000"; else ctr1 <= ctr1 + 1; end if; end process; Clkdiv13 <= ctr1(3);

BaudRate_Generator VHDL Model(3) process(Clkdiv13) -- ctr2 is an 8-bit counter begin if (Clkdiv13'event and Clkdiv13 = '1') then ctr2 <= ctr2 + 1; end if; end process; BclkX8 <= ctr2(to_integer(sel)); -- MUX process(BclkX8) if (BclkX8'event and BclkX8 = '1') then ctr3 <= ctr3 + 1; Bclk <= ctr3(2); end baudgen;

UART Transmitter模組

UART Transmitter離散事件建模 狀態0:暫存器Ready_REG = 0,傳輸結束訊號FINISH = 0,TX腳位為1。若觸發訊號S0 = 1,則狀態轉移到狀態1,否則不轉態。 狀態1:將傳送的資料DATA_I存放於暫存器TX_BUFF,Ready_REG = 1,並將BitCnt_REG計數器清空,等待傳輸baudrate TBAUDRATE_I=1,轉移到狀態2。 狀態2:TX傳出TX_BUFF(0),又將TX_BUFF右移1Bit,並累加BitCnt_REG後直接轉態到狀態3。 狀態3:等待傳輸baudrate TBAUDRATE_I=0,轉態到狀態4。 狀態4:當TBAUDRATE_I=1,且BitCnt_REG<10則回到轉到狀態2,否則轉到狀態5 狀態5:傳輸結束訊號FINISH = 1,若觸發訊號S0 = 0,則回到初始狀態0,否則不轉態。

UART Transmitter電路合成 請上機完成此一電路模擬驗證

UART Receiver模組

UART Receiver離散事件建模 狀態0:計數器BitCnt_REG = 0,傳輸結束訊號FINISH = 0。若UART資料接收端RX = 0,則狀態轉移到狀態1,否則不轉態,並開始啟動接收。 狀態1:取樣計數器SampleCnt_REG = 0,並直接轉態到狀態2。 狀態2:等待RBAUDRATE_I=1,此時若SampleCnt_REG=8,則轉移到狀態4,SampleCnt_REG=15,則轉移到狀態6,否則轉移到狀態3。 狀態3:累加SampleCnt_REG,並轉移到狀態5 狀態4:將UART資料接收端RX 存入暫存器RX_BUFF並右移1,累加SampleCnt_REG後轉態到狀態5。 狀態5:等待RBAUDRATE_I=0,轉態到狀態2。 狀態6:將BitCnt_REG加1,轉態到狀態7。 狀態7:等待RBAUDRATE_I=0,此時若BitCnt_REG<10,則轉移到狀態1繼續接收下一個資料,否則則轉移到狀態8。 狀態8:將接收的資料RX_BUFF傳出,並設定資料錯誤訊號ERR,並直接轉態到狀態9。 狀態9:接收結束訊號FINISH = 1,並直接轉態到初始狀態。

練習:UART Receiver電路合成 請上機完成此一電路模擬驗證