1 from migen
.fhdl
.structure
import *
2 from migen
.fhdl
import tools
, verilog
, autofragment
3 from migen
.bus
import wishbone
, csr
, wishbone2csr
5 from milkymist
import m1reset
, clkfx
, lm32
, norflash
, uart
, sram
11 sram_size
= 4096 # in kilobytes
13 clkfx_sys
= clkfx
.ClkFX(50*MHz
, clk_freq
)
14 reset0
= m1reset
.M1Reset()
17 norflash0
= norflash
.NorFlash(25, 12)
18 sram0
= sram
.SRAM(sram_size
//4)
19 wishbone2csr0
= wishbone2csr
.WB2CSR()
20 wishbonecon0
= wishbone
.InterconnectShared(
21 [cpu0
.ibus
, cpu0
.dbus
],
22 [(0, norflash0
.bus
), (1, sram0
.bus
), (3, wishbone2csr0
.wishbone
)],
25 uart0
= uart
.UART(0, clk_freq
, baud
=115200)
26 csrcon0
= csr
.Interconnect(wishbone2csr0
.csr
, [uart0
.bank
.interface
])
28 frag
= autofragment
.from_local()
29 src_verilog
, vns
= verilog
.convert(frag
,
30 {clkfx_sys
.clkin
, reset0
.trigger_reset
},
32 clk_signal
=clkfx_sys
.clkout
,
33 rst_signal
=reset0
.sys_rst
,
35 src_ucf
= constraints
.get(vns
, clkfx_sys
, reset0
, norflash0
, uart0
)
36 return (src_verilog
, src_ucf
)