//+FHDR-------------------------------------------------------------------------------------------------------- // Company: //----------------------------------------------------------------------------------------------------------------- // File Name : spi_top.v // Department : // Author : pwy // Author's Tel : //----------------------------------------------------------------------------------------------------------------- // Relese History // Version Date Author Description // 1.2 2024-04-02 pwy Integrate a digital module and two SPI modules with PLL //----------------------------------------------------------------------------------------------------------------- // Keywords : // //----------------------------------------------------------------------------------------------------------------- // Parameter // //----------------------------------------------------------------------------------------------------------------- // Purpose : // //----------------------------------------------------------------------------------------------------------------- // Target Device: // Tool versions: //----------------------------------------------------------------------------------------------------------------- // Reuse Issues // Reset Strategy: // Clock Domains: // Critical Timing: // Asynchronous I/F: // Synthesizable (y/n): // Other: //-FHDR-------------------------------------------------------------------------------------------------------- module spi_slave ( //system port input clk // System Main Clock ,input rst_n // Spi Reset active low //spi port ,input sclk // Spi Clock ,input csn // Spi Chip Select active low ,input mosi // Spi Mosi ,input [4 :0] cfgid ,output miso // Spi Miso ,output oen // Spi Miso output enable //connect pll ,output [31 :0] pll_wrdata ,output pll_wren ,output [7 :0] pll_rwaddr ,output pll_rden ,input [31 :0] pll_rddata //connect system ,output [31 :0] sys_wrdata ,output sys_wren ,output [24 :0] sys_rwaddr ,output sys_rden ,input [31 :0] sys_rddata ); //////////////////////////////////////////////////////////////// // pll spi //////////////////////////////////////////////////////////////// wire pll_miso ; wire pll_oen ; wire pll_sel ; spi_pll U_spi_pll ( .rst_n ( rst_n ) ,.cfgid ( cfgid ) ,.csn ( csn ) ,.sclk ( sclk ) ,.mosi ( mosi ) ,.miso ( pll_miso ) ,.oen ( pll_oen ) ,.sel ( pll_sel ) ,.wrdata ( pll_wrdata ) ,.wren ( pll_wren ) ,.rwaddr ( pll_rwaddr ) ,.rden ( pll_rden ) ,.rddata ( pll_rddata ) ); //////////////////////////////////////////////////////////////// //sys pll //////////////////////////////////////////////////////////////// wire sys_miso ; wire sys_oen ; spi_sys U_spi_sys ( .clk ( clk ) ,.rst_n ( rst_n ) ,.cfgid ( cfgid ) ,.sclk ( sclk ) ,.csn ( csn ) ,.mosi ( mosi ) ,.miso ( sys_miso ) ,.oen ( sys_oen ) ,.wrdata ( sys_wrdata ) ,.addr ( sys_rwaddr ) ,.wren ( sys_wren ) ,.rden ( sys_rden ) ,.rddata ( sys_rddata ) ); assign miso = pll_sel ? pll_miso : sys_miso ; assign oen = pll_sel ? pll_oen : sys_oen ; endmodule