Advertisement
Guest User

Untitled

a guest
Aug 15th, 2016
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.49 KB | None | 0 0
  1.  
  2. """
  3. ("sd_card", 0,
  4.     Subsignal("cmd", Pins("P115"), IOStandard("LVCMOS33"), Misc("PULLUP")),
  5.     Subsignal("clk", Pins("P116")),
  6.     Subsignal("cd", Pins("P120")),
  7.     Subsignal("d", Pins("P114 P119 P118 P117"), IOStandard("LVCMOS33"), Misc("PULLUP")),
  8.     IOStandard("LVCMOS33"), Misc("SLEW=FAST")
  9.    )
  10.  
  11. """
  12.  
  13. class SDCARD(Module):
  14.     def __init__(self, platform, pads):
  15.         self.master = master = wishbone.Interface()
  16.         self.slave = slave = wishbone.Interface()
  17.  
  18.  
  19.         self.int_cmd = Signal()
  20.         self.int_data = Signal()
  21.  
  22.         self.cmd_o = Signal()
  23.         self.cmd_i = Signal()
  24.         self.cmd_oe = Signal()
  25.         self.dat_o = Signal(4)
  26.         self.dat_i = Signal(4)
  27.         self.dat_oe = Signal()
  28.         self.sd_clk = Signal()
  29.  
  30.         self.cmd = TSTriple(1)
  31.         self.dat = TSTriple(4)
  32.         self.specials += self.cmd.get_tristate(pads.cmd)
  33.         self.specials += self.dat.get_tristate(pads.d)
  34.  
  35.         self.comb += [
  36.             self.cmd.o.eq(self.cmd_o),
  37.             self.cmd.oe.eq(self.cmd_oe),
  38.             self.cmd_i.eq(self.cmd.i),
  39.  
  40.             self.dat.o.eq(self.dat_o),
  41.             If(self.dat_oe, self.dat.oe.eq(0xf)).Else(self.dat.oe.eq(0)),
  42.             self.dat_i.eq(self.dat.i),
  43.             self.sd_clk.eq(pads.clk)
  44.         ]
  45.  
  46.         ###
  47.  
  48.  
  49.         self.specials += Instance("sdc_controller",
  50.  
  51.  
  52.                                   i_wb_clk_i=ClockSignal(),
  53.                                   i_wb_rst_i=ResetSignal(),
  54.  
  55.  
  56.                                   # WISHBONE slave
  57.                                   i_wb_dat_i=slave.dat_r,
  58.                                   o_wb_dat_o=slave.dat_w,
  59.                                   i_wb_adr_i=slave.adr,
  60.                                   i_wb_sel_i=slave.sel,
  61.                                   i_wb_we_i=slave.we,
  62.                                   i_wb_cyc_i=slave.cyc,
  63.                                   i_wb_stb_i=slave.stb,
  64.                                   o_wb_ack_o=slave.ack,
  65.  
  66.                                   # WISHBONE master
  67.                                   o_m_wb_dat_o=master.dat_w,
  68.                                   i_m_wb_dat_i=master.dat_r,
  69.                                   o_m_wb_adr_o=master.adr,
  70.                                   o_m_wb_sel_o=master.sel,
  71.                                   o_m_wb_we_o=master.we,
  72.                                   o_m_wb_cyc_o=master.cyc,
  73.                                   o_m_wb_stb_o=master.stb,
  74.                                   i_m_wb_ack_i=master.ack,
  75.                                   o_m_wb_cti_o=master.cti,
  76.                                   o_m_wb_bte_o=master.bte,
  77.  
  78.                                   # SD BUS
  79.                                   i_sd_cmd_dat_i=self.cmd_i,
  80.                                   o_sd_cmd_out_o=self.cmd_o,
  81.                                   o_sd_cmd_oe_o=self.cmd_oe,
  82.                                   #card_detect,
  83.                                   i_sd_dat_dat_i=self.dat_i,
  84.                                   o_sd_dat_out_o=self.dat_o,
  85.                                   o_sd_dat_oe_o=self.dat_oe,
  86.                                   o_sd_clk_o_pad=self.sd_clk,
  87.                                   i_sd_clk_i_pad=ClockSignal(),
  88.  
  89.                                   o_int_cmd=self.int_cmd,
  90.                                   o_int_data=self.int_data
  91.         )
  92.  
  93.  
  94.  
  95.         sdcard_path = os.path.abspath(os.path.dirname(__file__))
  96.         platform.add_source_dir(os.path.join(sdcard_path, "verilog"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement