.ext15_pready (exp15_pready),
.ext15_pslverr (exp15_pslverr),
.APBACTIVE (APBACTIVE), // Status Output for clock gating
// Peripherals
// UART
.uart0_rxd (uart0_rxd),
.uart0_txd (uart0_txd),
.uart0_txen (uart0_txen),
.uart1_rxd (uart1_rxd),
.uart1_txd (uart1_txd),
.uart1_txen (uart1_txen),
.uart2_rxd (uart2_rxd),
.uart2_txd (uart2_txd),
.uart2_txen (uart2_txen),
// Timer
.timer0_extin (timer0_extin),
.timer1_extin (timer1_extin),
// Interrupt outputs
.apbsubsys_interrupt (apbsubsys_interrupt),
.watchdog_interrupt (watchdog_interrupt),
// reset output
.watchdog_reset (WDOGRESETREQ)
);
// Connect system bus to external
assign HADDR = sys_haddr;
assign HTRANS = sys_htrans;
assign HSIZE = sys_hsize;
assign HWRITE = sys_hwrite;
assign HWDATA = sys_hwdata;
assign HREADY = sys_hready;
// -------------------------------
// DMA Controller
// -------------------------------
// DMA interface external in this example system
// -------------------------------
// Interrupt assignment
// -------------------------------
assign intnmi_cm0 = watchdog_interrupt;
assign intisr_cm0[ 5: 0] = apbsubsys_interrupt[ 5: 0];
assign intisr_cm0[ 6] = apbsubsys_interrupt[ 6] | gpio0_combintr;
assign intisr_cm0[ 7] = apbsubsys_interrupt[ 7] | gpio1_combintr;
assign intisr_cm0[14: 8] = apbsubsys_interrupt[14: 8];
assign intisr_cm0[15] = apbsubsys_interrupt[15] | dma_done | dma_err;
assign intisr_cm0[31:16] = apbsubsys_interrupt[31:16]| gpio0_intr;
// -------------------------------
// SysTick signals
// -------------------------------
cmsdk_mcu_stclkctrl
#(.DIV_RATIO (18'd01000))
u_cmsdk_mcu_stclkctrl (
.FCLK (FCLK),
.SYSRESETn (HRESETn),
.STCLKEN (STCLKEN),
.STCALIB (STCALIB)
);
// --------------------------------------------------------------------------------
// Verification components
// --------------------------------------------------------------------------------
`ifdef ARM_AHB_ASSERT_ON
// AHB protocol checker for process bus
AhbLitePC #(
.ADDR_WIDTH (32),
.DATA_WIDTH (32),
.BIG_ENDIAN (BE),
.MASTER_TO_INTERCONNECT ( 1),
.EARLY_BURST_TERMINATION ( 0),
// Property type (0=prove, 1=assume, 2=ignore)
.MASTER_REQUIREMENT_PROPTYPE ( 0),
.MASTER_RECOMMENDATION_PROPTYPE ( 0),
.MASTER_XCHECK_PROPTYPE ( 0),
.SLAVE_REQUIREMENT_PROPTYPE ( 0),
.SLAVE_RECOMMENDATION_PROPTYPE ( 0),
.SLAVE_XCHECK_PROPTYPE ( 0),
.INTERCONNECT_REQUIREMENT_PROPTYPE ( 0),
.INTERCONNECT_RECOMMENDATION_PROPTYPE ( 0),
.INTERCONNECT_XCHECK_PROPTYPE ( 0)
) u_AhbLitePC_processor
(
// clock
.HCLK (HCLKSYS),
// active low reset
.HRESETn (HRESETn),
// Main Master signals
.HADDR (cm0_haddr),
.HTRANS (cm0_htrans),
.HWRITE (cm0_hwrite),
.HSIZE (cm0_hsize),
.HBURST (cm0_hburst),
.HPROT (cm0_hprot),
.HWDATA (cm0_hwdata),
// Main Decoder signals
.HSELx (1'bx), // Ignored for this instance
// Main Slave signals
.HRDATA (cm0_hrdata),
.HREADY (cm0_hready),
.HREADYOUT (1'bx), // Ignored for this instance
.HRESP (cm0_hresp),
// HMASTER, // NOTE: not used
.HMASTLOCK (cm0_hmastlock)
);
generate if (INCLUDE_DMA != 0) begin : gen_ahblite_with_dma
// AHB protocol checker for DMA bus
AhbLitePC #(
.ADDR_WIDTH (32),
.DATA_WIDTH (32),
.BIG_ENDIAN (BE),
.MASTER_TO_INTERCONNECT ( 1),
.EARLY_BURST_TERMINATION ( 0),
// Property type (0=prove, 1=assume, 2=ignore)
.MASTER_REQUIREMENT_PROPTYPE ( 0),
.MASTER_RECOMMENDATION_PROPTYPE ( 0),
.MASTER_XCHECK_PROPTYPE ( 0),
.SLAVE_REQUIREMENT_PROPTYPE ( 0),
.SLAVE_RECOMMENDATION_PROPTYPE ( 0),
.SLAVE_XCHECK_PROPTYPE ( 0),
.INTERCONNECT_REQUIREMENT_PROPTYPE ( 0),
.INTERCONNECT_RECOMMENDATION_PROPTYPE ( 0),
.INTERCONNECT_XCHECK_PROPTYPE ( 0)
) u_AhbLitePC_dma
(
// clock
.HCLK (HCLKSYS),
// active low reset
.HRESETn (HRESETn),
// Main Master signals
.HADDR (dmac_haddr),
.HTRANS (dmac_htrans),
.HWRITE (dmac_hwrite),
.HSIZE (dmac_hsize),
.HBURST (dmac_hburst),
.HPROT (dmac_hprot),
.HWDATA (dmac_hwdata),
// Main Decoder signals
.HSELx (1'bx), // Ignored for this instance
// Main Slave signals
.HRDATA (dmac_hrdata),
.HREADY (dmac_hready),
.HREADYOUT (1'bx), // Ignored for this instance
.HRESP (dmac_hresp),
.HMASTLOCK (dmac_hmastlock)
);
// AHB protocol checker for the out bus from bus multiplexer
// AHB-Lite slave interface
AhbLitePC #(
.ADDR_WIDTH (32),
.DATA_WIDTH (32),
.BIG_ENDIAN (BE),
.MASTER_TO_INTERCONNECT ( 1),
.EARLY_BURST_TERMINATION ( 0),
// Property type (0=prove, 1=assume, 2=ignore)
.MASTER_REQUIREMENT_PROPTYPE ( 0),
.MASTER_RECOMMENDATION_PROPTYPE ( 0),
.MASTER_XCHECK_PROPTYPE ( 0),
.SLAVE_REQUIREMENT_PROPTYPE ( 0),
.SLAVE_RECOMMENDATION_PROPTYPE ( 0),
.SLAVE_XCHECK_PROPTYPE ( 0),
.INTERCONNECT_REQUIREMENT_PROPTYPE ( 0),
.INTERCONNECT_RECOMMENDATION_PROPTYPE ( 0),
.INTERCONNECT_XCHECK_PROPTYPE ( 0)
) u_AhbLitePC_sys
(
// clock
.HCLK (HCLKSYS),
// active low reset
.HRESETn (HRESETn),
// Main Master signals
.HADDR (sys_haddr),
.HTRANS (sys_htrans),
.HWRITE (sys_hwrite),
.HSIZE (sys_hsize),
.HBURST (sys_hburst),
.HPROT (sys_hprot),
.HWDATA (sys_hwdata),
// Main Decoder signals
.HSELx (1'bx), // Ignored for this instance
// Main Slave signals
.HRDATA (sys_hrdata),
.HREADY (sys_hready),
.HREADYOUT (1'bx), // Ignored for this instance
.HRESP (sys_hresp),
.HMASTLOCK (dmac_hmastlock)
);
end endgenerate
`endif
endmodule
This page: |
Created: | Wed Apr 6 17:30:52 2022 |
|
From: |
../verilog/cmsdk_mcu_system.v |