Add UART test code
This commit is contained in:
parent
d2b5cde9aa
commit
8742a10a3d
4 changed files with 79 additions and 0 deletions
22
Makefile
Normal file
22
Makefile
Normal file
|
@ -0,0 +1,22 @@
|
|||
buildpath = build/
|
||||
filename = uart_test
|
||||
files = top.v
|
||||
pcf_file = io.pcf
|
||||
|
||||
.PHONY: build prog prog_flash clean
|
||||
|
||||
build:
|
||||
#yosys -p "synth_ice40 -blif $(buildpath)$(filename).blif -top top" $(files)
|
||||
#arachne-pnr -r -d 5k -P sg48 -p $(pcf_file) $(buildpath)$(filename).blif -o $(buildpath)$(filename).asc
|
||||
yosys -p "synth_ice40 -json $(buildpath)$(filename).json -top top" $(files)
|
||||
nextpnr-ice40 --up5k --json $(buildpath)$(filename).json --pcf $(pcf_file) --asc $(buildpath)$(filename).asc
|
||||
icepack $(buildpath)$(filename).asc $(buildpath)$(filename).bin
|
||||
|
||||
prog: build #for sram
|
||||
iceprog -S $(buildpath)$(filename).bin
|
||||
|
||||
prog_flash: build
|
||||
iceprog $(buildpath)$(filename).bin
|
||||
|
||||
clean:
|
||||
rm -rf $(buildpath)/*
|
4
build/.gitignore
vendored
Normal file
4
build/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
# ignore everything here
|
||||
*
|
||||
# let the gitignore stay
|
||||
!.gitignore
|
25
io.pcf
Normal file
25
io.pcf
Normal file
|
@ -0,0 +1,25 @@
|
|||
# 12 MHz clock
|
||||
set_io clk 35
|
||||
|
||||
# RS232
|
||||
set_io ser_rx 26
|
||||
set_io ser_tx 27
|
||||
|
||||
# SPI Flash
|
||||
set_io flash_clk 15
|
||||
set_io flash_csb 16
|
||||
set_io flash_io0 14
|
||||
set_io flash_io1 17
|
||||
#set_io flash_io2 12
|
||||
#set_io flash_io3 13
|
||||
|
||||
# LEDs (PMOD 2)
|
||||
set_io led1 39
|
||||
set_io led2 40
|
||||
set_io led3 41
|
||||
set_io led4 23
|
||||
set_io led5 25
|
||||
|
||||
# Onboard LEDs
|
||||
set_io ledr_n 11
|
||||
set_io ledg_n 37
|
28
top.v
Normal file
28
top.v
Normal file
|
@ -0,0 +1,28 @@
|
|||
// Simple test of the UART pins and clock, no CPU needed
|
||||
|
||||
module top(input clk, output ser_tx, input ser_rx);
|
||||
//assign ser_tx = test_chars; // uncomment for a bunch of ASCII "U" characters
|
||||
assign ser_tx = ser_rx; // uncomment first for serial echo
|
||||
|
||||
wire serclk;
|
||||
reg test_chars;
|
||||
|
||||
clkdiv clock_generator (clk, serclk);
|
||||
|
||||
always @(posedge serclk) begin
|
||||
test_chars = !test_chars;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module clkdiv(input clock_in, output reg clock_out);
|
||||
reg[15:0] counter=16'd0;
|
||||
parameter DIVISOR = 16'd104; //set according to desired baudrate for test characters (e.g. 12,000,000 Hz / 115200 baud ~= clock divider 104)
|
||||
|
||||
always @(posedge clock_in) begin
|
||||
counter <= counter + 16'd1;
|
||||
if(counter>=(DIVISOR-1))
|
||||
counter <= 16'd0;
|
||||
|
||||
clock_out <= (counter<DIVISOR/2)?1'b1:1'b0;
|
||||
end
|
||||
endmodule
|
Loading…
Add table
Reference in a new issue