Line 174... |
Line 174... |
generic map (
|
generic map (
|
-- General --
|
-- General --
|
CLOCK_FREQUENCY => f_clock_c, -- clock frequency of clk_i in Hz
|
CLOCK_FREQUENCY => f_clock_c, -- clock frequency of clk_i in Hz
|
BOOTLOADER_EN => false, -- implement processor-internal bootloader?
|
BOOTLOADER_EN => false, -- implement processor-internal bootloader?
|
USER_CODE => x"12345678", -- custom user code
|
USER_CODE => x"12345678", -- custom user code
|
HW_THREAD_ID => x"00000000", -- hardware thread id (hartid)
|
HW_THREAD_ID => 0, -- hardware thread id (hartid) (32-bit)
|
-- RISC-V CPU Extensions --
|
-- RISC-V CPU Extensions --
|
CPU_EXTENSION_RISCV_A => true, -- implement atomic extension?
|
CPU_EXTENSION_RISCV_A => true, -- implement atomic extension?
|
CPU_EXTENSION_RISCV_B => true, -- implement bit manipulation extensions?
|
CPU_EXTENSION_RISCV_B => true, -- implement bit manipulation extensions?
|
CPU_EXTENSION_RISCV_C => true, -- implement compressed extension?
|
CPU_EXTENSION_RISCV_C => true, -- implement compressed extension?
|
CPU_EXTENSION_RISCV_E => false, -- implement embedded RF extension?
|
CPU_EXTENSION_RISCV_E => false, -- implement embedded RF extension?
|
Line 216... |
Line 216... |
IO_TWI_EN => true, -- implement two-wire interface (TWI)?
|
IO_TWI_EN => true, -- implement two-wire interface (TWI)?
|
IO_PWM_EN => true, -- implement pulse-width modulation unit (PWM)?
|
IO_PWM_EN => true, -- implement pulse-width modulation unit (PWM)?
|
IO_WDT_EN => true, -- implement watch dog timer (WDT)?
|
IO_WDT_EN => true, -- implement watch dog timer (WDT)?
|
IO_TRNG_EN => false, -- trng cannot be simulated
|
IO_TRNG_EN => false, -- trng cannot be simulated
|
IO_CFS_EN => true, -- implement custom functions subsystem (CFS)?
|
IO_CFS_EN => true, -- implement custom functions subsystem (CFS)?
|
IO_CFS_CONFIG => (others => '0') -- custom CFS configuration generic
|
IO_CFS_CONFIG => (others => '0'), -- custom CFS configuration generic
|
|
IO_NCO_EN => true -- implement numerically-controlled oscillator (NCO)?
|
)
|
)
|
port map (
|
port map (
|
-- Global control --
|
-- Global control --
|
clk_i => clk_gen, -- global clock, rising edge
|
clk_i => clk_gen, -- global clock, rising edge
|
rstn_i => rst_gen, -- global reset, low-active, async
|
rstn_i => rst_gen, -- global reset, low-active, async
|
-- Wishbone bus interface --
|
-- Wishbone bus interface (available if MEM_EXT_EN = true) --
|
wb_tag_o => wb_cpu.tag, -- tag
|
wb_tag_o => wb_cpu.tag, -- tag
|
wb_adr_o => wb_cpu.addr, -- address
|
wb_adr_o => wb_cpu.addr, -- address
|
wb_dat_i => wb_cpu.rdata, -- read data
|
wb_dat_i => wb_cpu.rdata, -- read data
|
wb_dat_o => wb_cpu.wdata, -- write data
|
wb_dat_o => wb_cpu.wdata, -- write data
|
wb_we_o => wb_cpu.we, -- read/write
|
wb_we_o => wb_cpu.we, -- read/write
|
Line 234... |
Line 235... |
wb_stb_o => wb_cpu.stb, -- strobe
|
wb_stb_o => wb_cpu.stb, -- strobe
|
wb_cyc_o => wb_cpu.cyc, -- valid cycle
|
wb_cyc_o => wb_cpu.cyc, -- valid cycle
|
wb_lock_o => wb_cpu.lock, -- locked/exclusive bus access
|
wb_lock_o => wb_cpu.lock, -- locked/exclusive bus access
|
wb_ack_i => wb_cpu.ack, -- transfer acknowledge
|
wb_ack_i => wb_cpu.ack, -- transfer acknowledge
|
wb_err_i => wb_cpu.err, -- transfer error
|
wb_err_i => wb_cpu.err, -- transfer error
|
-- Advanced memory control signals --
|
-- Advanced memory control signals (available if MEM_EXT_EN = true) --
|
fence_o => open, -- indicates an executed FENCE operation
|
fence_o => open, -- indicates an executed FENCE operation
|
fencei_o => open, -- indicates an executed FENCEI operation
|
fencei_o => open, -- indicates an executed FENCEI operation
|
-- GPIO --
|
-- GPIO (available if IO_GPIO_EN = true) --
|
gpio_o => gpio, -- parallel output
|
gpio_o => gpio, -- parallel output
|
gpio_i => gpio, -- parallel input
|
gpio_i => gpio, -- parallel input
|
-- UART --
|
-- UART (available if IO_UART_EN = true) --
|
uart_txd_o => uart_txd, -- UART send data
|
uart_txd_o => uart_txd, -- UART send data
|
uart_rxd_i => uart_txd, -- UART receive data
|
uart_rxd_i => uart_txd, -- UART receive data
|
-- SPI --
|
-- SPI (available if IO_SPI_EN = true) --
|
spi_sck_o => open, -- SPI serial clock
|
spi_sck_o => open, -- SPI serial clock
|
spi_sdo_o => spi_data, -- controller data out, peripheral data in
|
spi_sdo_o => spi_data, -- controller data out, peripheral data in
|
spi_sdi_i => spi_data, -- controller data in, peripheral data out
|
spi_sdi_i => spi_data, -- controller data in, peripheral data out
|
spi_csn_o => open, -- SPI CS
|
spi_csn_o => open, -- SPI CS
|
-- TWI --
|
-- TWI (available if IO_TWI_EN = true) --
|
twi_sda_io => twi_sda, -- twi serial data line
|
twi_sda_io => twi_sda, -- twi serial data line
|
twi_scl_io => twi_scl, -- twi serial clock line
|
twi_scl_io => twi_scl, -- twi serial clock line
|
-- PWM --
|
-- PWM (available if IO_PWM_EN = true) --
|
pwm_o => open, -- pwm channels
|
pwm_o => open, -- pwm channels
|
-- Custom Functions Subsystem IO --
|
-- Custom Functions Subsystem IO --
|
cfs_in_i => (others => '0'), -- custom CFS inputs
|
cfs_in_i => (others => '0'), -- custom CFS inputs
|
cfs_out_o => open, -- custom CFS outputs
|
cfs_out_o => open, -- custom CFS outputs
|
|
-- NCO output (available if IO_NCO_EN = true) --
|
|
nco_o => open, -- numerically-controlled oscillator channels
|
-- system time input from external MTIME (available if IO_MTIME_EN = false) --
|
-- system time input from external MTIME (available if IO_MTIME_EN = false) --
|
mtime_i => (others => '0'), -- current system time
|
mtime_i => (others => '0'), -- current system time
|
-- Interrupts --
|
-- Interrupts --
|
soc_firq_i => soc_firq_ring, -- fast interrupt channels
|
soc_firq_i => soc_firq_ring, -- fast interrupt channels
|
mtime_irq_i => '0', -- machine software interrupt, available if IO_MTIME_EN = false
|
mtime_irq_i => '0', -- machine software interrupt, available if IO_MTIME_EN = false
|