alse uart us
TRANSCRIPT
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 1/18
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 2/18
© Bertrand CUZEAU - [email protected]
Introduction
We will demonstrate, on a “real-life” example, how a
sound HDL methodology can be used in conjunctionwith modern synthesis and simulation tools.
Note : the source code we provide here if for teaching purpose only.
This code belongs to ALSE. If you want to use it in your projects please contact us.
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 3/18
© Bertrand CUZEAU - [email protected]
UART Specification
We want to address the following needs :
• Transmit / Receive with h/w handshake• “N81” Format , but plan for parity
• Speed : 1200..115200 baud (Clock = 14.7456 MHz)
• No internal Fifo (usually not needed in an FPGA !)• Limited frame timing checks
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 4/18
© Bertrand CUZEAU - [email protected]
Methodology
We adopt the following constraints :
• Standard & 100% portable VHDL Description :- Synthesis- Simulation- Target FPGA (or CPLD)
• Complete functional Simulation with file I/O.
• Should work “in vivo” on an existing ALSE demo board.
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 5/18
Application Architecture
I320
UARTS
Baud[2:0]
CLK
Din[7:0]
LD
RST
RxDout[7:0]
RxErrRxRDY
Tx
TxBusy
I307C
D Q
I306C
D Q
I218
I14*
I202*
I317*
I318*
I319*
I54*
I15*
SDout[7:0]TX
TXout
LD_SDout TxBusy
TxBusyRXFLEX
RawRx RXSDout[7:0] SDout[7:0] CTSFLEX
CLKSDin[7:0]
SDin[7:0]Baud[2:0]LD_SDout LD_SDout
RxRDYRxRDY
CLK RxErrRxErr
RST RSTRTS
RTSFLEXRawRTS RTS
CLK
RST
CLK CLKRST RST
DIPSW[2]Baud[2]
DIPSW[1]Baud[1]
DIPSW[0]Baud[0]
RS232 Inputs
External Baud Rate Selection
RS 232 Output
ApplicationUART module
(0=active)
Noted on PCB = RTSFlex
Inversion needed
Noted on PCB = CTSFlex
© Bertrand CUZEAU - [email protected]
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 6/18
© Bertrand CUZEAU - [email protected]
Baud Rate Generator
• Embedded in UARTS.
• Divides by 8, 16, 28, 48, 96, 192, 384 or 768
and builds Top16.
• Generates two “ticks” by further dividing Top16 :
- Transmit : TopTx, fixed rate
- Receive : TopRx, mid-bit, resynchronized
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 7/18
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 8/18
© Bertrand CUZEAU - [email protected]
Transmitter
We use a very simple State Machine to control the
transmit shift register. The FSM inputs are :
– LD : Loads the character to transmit (Din)
– TopTx : Bit shifting command
For simplicity we code the FSM as a“re-synchronized Mealy”.
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 9/18
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 10/18
© Bertrand CUZEAU - [email protected]
Receiver
We also use a State Machine :• Wait RX (Start bit) falling edge,
• Synchronize the Half-bit counter
• Sample RX at mid-bit and verify the Start bit• Loop on the data bits (+ parity) :
* Skip transition
* Sample at mid-bit
• Sample and Test Stop bit
• Return to Idle state (waiting for a new Start condition)
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 11/18
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 12/18
Receiver State Machine
© Bertrand CUZEAU - [email protected]
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 13/18
© Bertrand CUZEAU - [email protected]
Test Application
To test our UART, we use a trivial “application” which
increments the characters received and resends them !
(Example : “A”→“B”, “f”→“g”, “HAL”→”IBM”…)
This way, it is easy to verify the reveive and transmitoperations, both by simulation and on the demo board.
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 14/18
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 15/18
© Bertrand CUZEAU - [email protected]
Test Bench
The VHDL Test Bench simply sends the ASCII character ‘A’
and displays the character(s) sent back by the system.
It is based on two behavioral UART routines (described in
another of our conferences).
A much more sophisticated Test Bench (with file I/O andconsole emulation with inter-character spacing) is provided by
ALSE in the commercial version.
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 16/18
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 17/18
© Bertrand CUZEAU - [email protected]
Let’s make it work !
After the theory, we are now going to follow the entire design
flow, down to the Demo Board (~10 minutes) :
1. Build the Project
2. Syntactic Verification3. Unitary Functional Simulation
4. Unitary Logic Synthesis
5. System-Level Simulation6. Global Synthesis
7. Place and Route
8. Download & tests on the demo board (using HyperTerminal !)
8/6/2019 Alse Uart Us
http://slidepdf.com/reader/full/alse-uart-us 18/18
© Bertrand CUZEAU - [email protected]
Conclusion
It takes less than a working day to design and test a simple UART
like this one. Powerful HDL languages, as well as capable
Simulation and Synthesis Tools are now widely available.
With the right methodology and some design practice, projects that
used to be considered as “complex” become almost trivial.
Note : an enhanced version of this UART, still simple and efficient, is
available at ALSE, at a very affordable cost.