From 6fd2eb1025ce664220127fe3528315cdef106038 Mon Sep 17 00:00:00 2001 From: Renan Augusto Starke Date: Tue, 17 Dec 2019 20:58:26 -0300 Subject: [PATCH] =?UTF-8?q?Adicionado=20arquivos=20da=20sram=20para=20kit?= =?UTF-8?q?=20de2-115.=20Hist=C3=B3rico=20perdido=20devido=20a=20p=C3=A9ss?= =?UTF-8?q?imo=20pull=20request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- peripherals/sram/DE2_115.vhdl | 361 ++++++++++++++++++++++++++++ peripherals/sram/README.md | 46 ++++ peripherals/sram/escrita.jpg | Bin 0 -> 42518 bytes peripherals/sram/leitura.jpg | Bin 0 -> 20733 bytes peripherals/sram/modelsim.png | Bin 0 -> 119771 bytes peripherals/sram/sram.vhd | 112 +++++++++ peripherals/sram/tabela_verdade.jpg | Bin 0 -> 39832 bytes peripherals/sram/tb.do | 44 ++++ peripherals/sram/tb_sram.vhd | 140 +++++++++++ peripherals/sram/testbench.do | 116 +++++++++ peripherals/sram/testbench.vhd | 319 ++++++++++++++++++++++++ 11 files changed, 1138 insertions(+) create mode 100644 peripherals/sram/DE2_115.vhdl create mode 100644 peripherals/sram/README.md create mode 100644 peripherals/sram/escrita.jpg create mode 100644 peripherals/sram/leitura.jpg create mode 100644 peripherals/sram/modelsim.png create mode 100644 peripherals/sram/sram.vhd create mode 100644 peripherals/sram/tabela_verdade.jpg create mode 100644 peripherals/sram/tb.do create mode 100644 peripherals/sram/tb_sram.vhd create mode 100644 peripherals/sram/testbench.do create mode 100644 peripherals/sram/testbench.vhd diff --git a/peripherals/sram/DE2_115.vhdl b/peripherals/sram/DE2_115.vhdl new file mode 100644 index 00000000..34e938f3 --- /dev/null +++ b/peripherals/sram/DE2_115.vhdl @@ -0,0 +1,361 @@ +library ieee; +library work; +use ieee.std_logic_1164.all; +use ieee.std_logic_misc.all; +use ieee.numeric_std.all; + +use work.decoder_types.all; + +entity DE2_115 is +generic ( + --! Num of 32-bits memory words + IMEMORY_WORDS : integer := 1024; --!= 4K (1024 * 4) bytes + DMEMORY_WORDS : integer := 1024 --!= 2k (512 * 2) bytes + ); + port ( + CLOCK_50 : in std_logic; + CLOCK2_50 : in std_logic; + CLOCK3_50 : in std_logic; + SMA_CLKIN : in std_logic; + SMA_CLKOUT : out std_logic; + LEDG : out std_logic_vector( 8 downto 0 ); + LEDR : out std_logic_vector( 17 downto 0 ); + KEY : in std_logic_vector( 3 downto 0 ); + EX_IO : inout std_logic_vector( 6 downto 0 ); + SW : in std_logic_vector( 17 downto 0 ); + HEX0 : out std_logic_vector( 6 downto 0 ); + HEX1 : out std_logic_vector( 6 downto 0 ); + HEX2 : out std_logic_vector( 6 downto 0 ); + HEX3 : out std_logic_vector( 6 downto 0 ); + HEX4 : out std_logic_vector( 6 downto 0 ); + HEX5 : out std_logic_vector( 6 downto 0 ); + HEX6 : out std_logic_vector( 6 downto 0 ); + HEX7 : out std_logic_vector( 6 downto 0 ); + LCD_BLON : out std_logic; + LCD_DATA : inout std_logic_vector( 7 downto 0 ); + LCD_EN : out std_logic; + LCD_ON : out std_logic; + LCD_RS : out std_logic; + LCD_RW : out std_logic; + UART_CTS : in std_logic; + UART_RTS : out std_logic; + UART_RXD : in std_logic; + UART_TXD : out std_logic; + PS2_CLK : inout std_logic; + PS2_CLK2 : inout std_logic; + PS2_DAT : inout std_logic; + PS2_DAT2 : inout std_logic; + SD_CLK : out std_logic; + SD_CMD : inout std_logic; + SD_DAT : inout std_logic_vector( 3 downto 0 ); + SD_WP_N : in std_logic; + VGA_B : out std_logic_vector( 7 downto 0 ); + VGA_BLANK_N : out std_logic; + VGA_CLK : out std_logic; + VGA_G : out std_logic_vector( 7 downto 0 ); + VGA_HS : out std_logic; + VGA_R : out std_logic_vector( 7 downto 0 ); + VGA_SYNC_N : out std_logic; + VGA_VS : out std_logic; + AUD_ADCDAT : in std_logic; + AUD_ADCLRCK : inout std_logic; + AUD_BCLK : inout std_logic; + AUD_DACDAT : out std_logic; + AUD_DACLRCK : inout std_logic; + AUD_XCK : out std_logic; + EEP_I2C_SCLK : out std_logic; + EEP_I2C_SDAT : inout std_logic; + I2C_SCLK : out std_logic; + I2C_SDAT : inout std_logic; + ENET0_GTX_CLK : out std_logic; + ENET0_INT_N : in std_logic; + ENET0_LINK100 : in std_logic; + ENET0_MDC : out std_logic; + ENET0_MDIO : inout std_logic; + ENET0_RST_N : out std_logic; + ENET0_RX_CLK : in std_logic; + ENET0_RX_COL : in std_logic; + ENET0_RX_CRS : in std_logic; + ENET0_RX_DATA : in std_logic_vector( 3 downto 0 ); + ENET0_RX_DV : in std_logic; + ENET0_RX_ER : in std_logic; + ENET0_TX_CLK : in std_logic; + ENET0_TX_DATA : out std_logic_vector( 3 downto 0 ); + ENET0_TX_EN : out std_logic; + ENET0_TX_ER : out std_logic; + ENETCLK_25 : in std_logic; + ENET1_GTX_CLK : out std_logic; + ENET1_INT_N : in std_logic; + ENET1_LINK100 : in std_logic; + ENET1_MDC : out std_logic; + ENET1_MDIO : inout std_logic; + ENET1_RST_N : out std_logic; + ENET1_RX_CLK : in std_logic; + ENET1_RX_COL : in std_logic; + ENET1_RX_CRS : in std_logic; + ENET1_RX_DATA : in std_logic_vector( 3 downto 0 ); + ENET1_RX_DV : in std_logic; + ENET1_RX_ER : in std_logic; + ENET1_TX_CLK : in std_logic; + ENET1_TX_DATA : out std_logic_vector( 3 downto 0 ); + ENET1_TX_EN : out std_logic; + ENET1_TX_ER : out std_logic; + TD_CLK27 : in std_logic; + TD_DATA : in std_logic_vector( 7 downto 0 ); + TD_HS : in std_logic; + TD_RESET_N : out std_logic; + TD_VS : in std_logic; + OTG_ADDR : out std_logic_vector( 1 downto 0 ); + OTG_CS_N : out std_logic; + OTG_DATA : inout std_logic_vector( 15 downto 0 ); + OTG_INT : in std_logic; + OTG_RD_N : out std_logic; + OTG_RST_N : out std_logic; + OTG_WE_N : out std_logic; + IRDA_RXD : in std_logic; + DRAM_ADDR : out std_logic_vector( 12 downto 0 ); + DRAM_BA : out std_logic_vector( 1 downto 0 ); + DRAM_CAS_N : out std_logic; + DRAM_CKE : out std_logic; + DRAM_CLK : out std_logic; + DRAM_CS_N : out std_logic; + DRAM_DQ : inout std_logic_vector( 31 downto 0 ); + DRAM_DQM : out std_logic_vector( 3 downto 0 ); + DRAM_RAS_N : out std_logic; + DRAM_WE_N : out std_logic; + SRAM_ADDR : out std_logic_vector( 19 downto 0 ); + SRAM_CE_N : out std_logic; + SRAM_DQ : inout std_logic_vector( 15 downto 0 ); + SRAM_LB_N : out std_logic; + SRAM_OE_N : out std_logic; + SRAM_UB_N : out std_logic; + SRAM_WE_N : out std_logic; + FL_ADDR : out std_logic_vector( 22 downto 0 ); + FL_CE_N : out std_logic; + FL_DQ : inout std_logic_vector( 7 downto 0 ); + FL_OE_N : out std_logic; + FL_RST_N : out std_logic; + FL_RY : in std_logic; + FL_WE_N : out std_logic; + FL_WP_N : out std_logic + ); +end entity; + + +architecture rtl of DE2_115 is + + signal clk : std_logic; + signal rst : std_logic; + + -- Instruction bus signals + signal idata : std_logic_vector(31 downto 0); + signal iaddress : integer range 0 to IMEMORY_WORDS-1 := 0; + signal address : std_logic_vector (9 downto 0); + + -- Data bus signals + signal daddress : integer range 0 to DMEMORY_WORDS-1; + signal ddata_r : std_logic_vector(31 downto 0); + signal ddata_w : std_logic_vector(31 downto 0); + signal dmask : std_logic_vector(3 downto 0); + signal dcsel : std_logic_vector(1 downto 0); + signal d_we : std_logic := '0'; + + signal ddata_r_mem : std_logic_vector(31 downto 0); + signal d_rd : std_logic; + + -- I/O signals + signal input_in : std_logic_vector(31 downto 0); + + -- PLL signals + signal locked_sig : std_logic; + + -- CPU state signals + signal state : cpu_state_t; + signal chipselect : STD_LOGIC; + signal write : STD_LOGIC; + signal read_address : unsigned(15 downto 0); + signal write_address : unsigned(15 downto 0); + signal q : STD_LOGIC_VECTOR(7 DOWNTO 0); + signal addressram : std_logic_vector(19 downto 0); + signal data_out : STD_LOGIC_VECTOR(15 DOWNTO 0); + signal data_in : STD_LOGIC_VECTOR(15 DOWNTO 0); + + signal clk_ram : std_logic; + +begin + + pll_inst: entity work.pll + port map( + areset => '0', + inclk0 => CLOCK_50, + c0 => clk, + locked => locked_sig + ); + + rst <= SW(9); + + -- Dummy out signals + DRAM_DQ <= ddata_r(31 downto 0); + --DRAM_DQ <= ddata_r(31 downto 16); + --LEDR(9) <= SW(9); + DRAM_ADDR(9 downto 0) <= address; + + -- IMem shoud be read from instruction and data buses + -- Not enough RAM ports for instruction bus, data bus and in-circuit programming + process(d_rd, dcsel, daddress, iaddress) + begin + if (d_rd = '1') and (dcsel = "00") then + address <= std_logic_vector(to_unsigned(daddress,10)); + else + address <= std_logic_vector(to_unsigned(iaddress,10)); + end if; + end process; + ------------------------------------ + chipselect <= '1'; + + addressram <= "01001111001001010000"; + clk_ram<= SW(17); + + sram: entity work.sram + port map( + SRAM_OE_N => SRAM_OE_N, + SRAM_WE_N => SRAM_WE_N, + SRAM_CE_N => SRAM_CE_N, + SRAM_ADDR => SRAM_ADDR, + SRAM_DQ => SRAM_DQ, + SRAM_UB_N => SRAM_UB_N, + SRAM_LB_N => SRAM_LB_N, + clk => clk_ram, + chipselect => chipselect, + write => write, + data_out => data_out, + address => addressram, + data_in => data_in + ); + + process (clk_ram) + begin + if rising_edge(clk_ram) then + if (SW(5) = '1') then + write <= '1'; + data_out <= "0000100001000111"; + LEDR(15 DOWNTO 0) <= "0000000000000000"; + else + write <= '0'; + LEDR(15 DOWNTO 0) <= data_in; + end if; + end if; + end process; + + + + ------------------------------------ + + -- 32-bits x 1024 words quartus RAM (dual port: portA -> riscV, portB -> In-System Mem Editor + iram_quartus_inst: entity work.iram_quartus + port map( + address => address, + byteena => "1111", + clock => clk, + data => (others => '0'), + wren => '0', + q => idata + ); + + -- Data Memory RAM + dmem: entity work.dmemory + generic map( + MEMORY_WORDS => DMEMORY_WORDS + ) + port map( + rst => rst, + clk => clk, + data => ddata_w, + address => daddress, + we => d_we, + csel => dcsel(0), + dmask => dmask, + q => ddata_r_mem + ); + + -- Adress space mux ((check sections.ld) -> Data chip select: + -- 0x00000 -> Instruction memory + -- 0x20000 -> Data memory + -- 0x40000 -> Input/Output generic address space + with dcsel select + ddata_r <= idata when "00", + ddata_r_mem when "01", + input_in when "10", + (others => '0') when others; + + -- Softcore instatiation + myRisc: entity work.core + generic map( + IMEMORY_WORDS => IMEMORY_WORDS, + DMEMORY_WORDS => DMEMORY_WORDS + ) + port map( + clk => clk, + rst => rst, + iaddress => iaddress, + idata => idata, + daddress => daddress, + ddata_r => ddata_r, + ddata_w => ddata_w, + d_we => d_we, + d_rd => d_rd, + dcsel => dcsel, + dmask => dmask, + state => state + ); + + -- Output register (Dummy LED blinky) + process(clk, rst) + begin + if rst = '1' then + --LEDR(3 downto 0) <= (others => '0'); + HEX0 <= (others => '1'); + HEX1 <= (others => '1'); + HEX2 <= (others => '1'); + HEX3 <= (others => '1'); + HEX4 <= (others => '1'); + HEX5 <= (others => '1'); + else + if rising_edge(clk) then + if (d_we = '1') and (dcsel = "10")then + -- ToDo: Simplify comparators + -- ToDo: Maybe use byte addressing? + -- x"01" (word addressing) is x"04" (byte addressing) + if to_unsigned(daddress, 32)(8 downto 0) = x"01" then + --LEDR(4 downto 0) <= ddata_w(4 downto 0); + elsif to_unsigned(daddress, 32)(8 downto 0) = x"02" then + HEX0 <= ddata_w(6 downto 0); + HEX1 <= ddata_w(13 downto 7); + HEX2 <= ddata_w(20 downto 14); + HEX3 <= ddata_w(27 downto 21); + HEX4 <= (others => '1'); + HEX5 <= (others => '1'); + end if; + end if; + end if; + end if; + end process; + + + -- Input register + process(clk, rst) + begin + if rst = '1' then + input_in <= (others => '0'); + else + if rising_edge(clk) then + input_in <= (others => '0'); + if (d_rd = '1') and (dcsel = "10") then + input_in(4 downto 0) <= SW(4 downto 0); + end if; + end if; + end if; + end process; + + +end; \ No newline at end of file diff --git a/peripherals/sram/README.md b/peripherals/sram/README.md new file mode 100644 index 00000000..e5627d6f --- /dev/null +++ b/peripherals/sram/README.md @@ -0,0 +1,46 @@ +## Controle SRAM DE2-115: + +Implementou-se o controle da SRAM externa, IS61WV102416BLL-10TLI, do módulo DE2-115. A SRAM em questão possui 2M bytes de memória. + +## Descrição dos pinos: + +| PINS | Descrição | +| ------------- |:-----------------------------------:| +| A0-A19 | Endereço de entrada | +| I/O0-1/O15 | Entrada e saída de dados | +| !CE | Saída de habilitação do chip | +| !OE | Output Enable Input | +| !WE | Write Enable Input | +| !LB | Lower-byte Control (I/O0-I/O7 | +| !UB | Upper-byte Control (I/O8-I/O15) | +| NC | Sem conexão | +| Vdd | Vdd power | +| GND | Terra | + +## Tabela da verdade da SRAM: + +![Alt text](https://github.com/marianegri/riscv-multicycle/blob/master/peripherals/sram_controle_DE2_115/tabela_verdade.jpg?raw=true) + +**Ciclo de Leitura** + +![Alt text](https://github.com/marianegri/riscv-multicycle/blob/master/peripherals/sram_controle_DE2_115/leitura.jpg?raw=true) + +**Ciclo de Escrita** + +![Alt text](https://github.com/marianegri/riscv-multicycle/blob/master/peripherals/sram_controle_DE2_115/escrita.jpg?raw=true) + + +## Resultados: +**Modelsim Simulação** + +![alt text](https://github.com/marianegri/riscv-multicycle/blob/master/peripherals/sram_controle_DE2_115/modelsim.png?raw=true "Resultados ModelSim") + +* Simulação com funcionamento adequado. +* Ao colocar no kit de desenvolvimento da altera percebe-se que a leitura não ocorre como o esperado. Possíveis causas: + * Sincronismo. + * Tempos de acionamento dos pinos diferente do esperado. + + +## Bibliografia +[DATASHEET](https://br.mouser.com/datasheet/2/198/61WV102416ALL-258682.pdf) + diff --git a/peripherals/sram/escrita.jpg b/peripherals/sram/escrita.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75840743c7e4e0c80200c5752702fa755c0cf1df GIT binary patch literal 42518 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 literal 0 HcmV?d00001 diff --git a/peripherals/sram/modelsim.png b/peripherals/sram/modelsim.png new file mode 100644 index 0000000000000000000000000000000000000000..e2412684f8559112c790f9a010a20695a8081e84 GIT binary patch literal 119771 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 literal 0 HcmV?d00001 diff --git a/peripherals/sram/sram.vhd b/peripherals/sram/sram.vhd new file mode 100644 index 00000000..ca0a8b51 --- /dev/null +++ b/peripherals/sram/sram.vhd @@ -0,0 +1,112 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.std_logic_textio.all; +use std.textio.all; + +entity sram is + PORT( + SRAM_OE_N : out std_logic; + SRAM_WE_N : out std_logic; + SRAM_CE_N : out std_logic; + SRAM_ADDR : out std_logic_vector(19 downto 0); + SRAM_DQ : inout std_logic_vector(15 downto 0); + SRAM_UB_N : out std_logic; + SRAM_LB_N : out std_logic; + -- + + clk : IN STD_LOGIC; + chipselect : IN STD_LOGIC; + write : IN STD_LOGIC; + read : IN STD_LOGIC; + data_out : in STD_LOGIC_VECTOR(15 DOWNTO 0); + address : in std_logic_vector(19 downto 0); + --read_address : IN unsigned(15 downto 0); + --write_address : IN unsigned(15 downto 0); + --we : IN STD_LOGIC; + data_in : out STD_LOGIC_VECTOR(15 DOWNTO 0) + ); +end entity sram; + +architecture RTL of sram is + type mem_state_type is (IDLE, READ_M, WRITE_M, DONE); + signal mem_state : mem_state_type; + + --type reg_array is array (0 to 31) of std_logic_vector(7 downto 0); + --signal memory : reg_array; + +begin + SRAM_ADDR <= address(19 downto 0); + + memory_state : process(clk) + begin + if rising_edge(clk) then + case mem_state is + when IDLE => + + if chipselect = '1' then + + if write = '1' then + mem_state <= WRITE_M; + end if; + if read = '1' then + mem_state <= READ_M; + end if; + + end if; + + when WRITE_M => + mem_state <= DONE; + + when READ_M => + mem_state <= DONE; + + when DONE => + mem_state <= IDLE; + + end case; + end if; + + end process; + + memory_state_output : process(mem_state, SRAM_DQ, data_out) + begin + + SRAM_CE_N <= '1'; + --SRAM_LB_N <= '0'; + --SRAM_UB_N <= '0'; + --SRAM_WE_N <= '0'; + --SRAM_OE_N <= '0'; + + case mem_state is + + when IDLE => + SRAM_WE_N <= '1'; + SRAM_CE_N <= '0'; + SRAM_OE_N <= '1'; + SRAM_LB_N <= '0'; + SRAM_UB_N <= '0'; + + when READ_M => + SRAM_WE_N <= '1'; + SRAM_CE_N <= '0'; + SRAM_OE_N <= '0'; + SRAM_LB_N <= '0'; + SRAM_UB_N <= '1'; + data_in <= SRAM_DQ; + + when WRITE_M => + SRAM_OE_N <= '0'; + SRAM_CE_N <= '0'; + SRAM_WE_N <= '0'; + SRAM_LB_N <= '0'; + SRAM_UB_N <= '1'; + SRAM_DQ <= data_out; + + when DONE => + + end case; + end process; + + +end architecture RTL; diff --git a/peripherals/sram/tabela_verdade.jpg b/peripherals/sram/tabela_verdade.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e702945abba8f14dbcb29b84fb6720c13f415400 GIT binary patch literal 39832 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 K2b358|0Vz}X^htZ literal 0 HcmV?d00001 diff --git a/peripherals/sram/tb.do b/peripherals/sram/tb.do new file mode 100644 index 00000000..4a3c0b0d --- /dev/null +++ b/peripherals/sram/tb.do @@ -0,0 +1,44 @@ +# ============================================================================ +# Name : tb_divisor.do +# Author : Renan Augusto Starke +# Version : 0.1 +# Copyright : Renan, Departamento de Eletrônica, Florianópolis, IFSC +# Description : Exemplo de script de compilação ModelSim para divisor de clock +# ============================================================================ + + +#Cria biblioteca do projeto +vlib work + +#compila projeto: todos os aquivo. Ordem é importante +vcom sram.vhd tb_sram.vhd + +#Simula (work é o diretorio, testbench é o nome da entity) +vsim -t ns work.tb_sram + +#Mosta forma de onda +view wave + +#Adiciona ondas específicas +# -radix: binary, hex, dec +# -label: nome da forma de onda +add wave -radix dec /clk +add wave -radix binary /write +add wave -radix binary /address +add wave -radix binary /SRAM_OE_N +add wave -radix binary /SRAM_WE_N +add wave -radix binary /SRAM_CE_N +add wave -radix binary /SRAM_ADDR +add wave -radix binary /SRAM_DQ +add wave -radix binary /SRAM_UB_N +add wave -radix binary /SRAM_LB_N +add wave -radix binary /data_in +add wave -radix binary /data_out +#Como mostrar sinais internos do processo + + +#Simula até um 500ns +run 500ns + +wave zoomfull +write wave wave.ps \ No newline at end of file diff --git a/peripherals/sram/tb_sram.vhd b/peripherals/sram/tb_sram.vhd new file mode 100644 index 00000000..e079d6c2 --- /dev/null +++ b/peripherals/sram/tb_sram.vhd @@ -0,0 +1,140 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity tb_sram is +end entity tb_sram; + +architecture RTL of tb_sram is + component sram + PORT( + SRAM_OE_N : out std_logic; + SRAM_WE_N : out std_logic; + SRAM_CE_N : out std_logic; + SRAM_ADDR : out std_logic_vector(19 downto 0); + SRAM_DQ : inout std_logic_vector(15 downto 0); + SRAM_UB_N : out std_logic; + SRAM_LB_N : out std_logic; + -- + + clk : IN STD_LOGIC; + chipselect : IN STD_LOGIC; + write : IN STD_LOGIC; + read : IN STD_LOGIC; + data_in : out STD_LOGIC_VECTOR(15 DOWNTO 0); + address : in std_logic_vector(19 downto 0); + --read_address : IN unsigned(15 downto 0); + --write_address : IN unsigned(15 downto 0); + --we : IN STD_LOGIC; + data_out : in STD_LOGIC_VECTOR(15 DOWNTO 0) + ); + end component sram; + + signal SRAM_OE_N : std_logic; + signal SRAM_WE_N : std_logic; + signal SRAM_CE_N : std_logic; + signal SRAM_ADDR : std_logic_vector(19 downto 0); + signal SRAM_DQ : std_logic_vector(15 downto 0); + signal SRAM_UB_N : std_logic; + signal SRAM_LB_N : std_logic; + -- + + signal clk : STD_LOGIC; + signal chipselect : STD_LOGIC; + signal write : STD_LOGIC; + signal read : STD_LOGIC; + signal address : std_logic_vector(19 downto 0); + signal data_in : STD_LOGIC_VECTOR(15 DOWNTO 0); + signal data_out : STD_LOGIC_VECTOR(15 DOWNTO 0); + + +begin + + dut: sram + port map( + SRAM_OE_N =>SRAM_OE_N, + SRAM_WE_N => SRAM_WE_N, + SRAM_CE_N => SRAM_CE_N, + SRAM_ADDR => SRAM_ADDR, + SRAM_DQ => SRAM_DQ, + SRAM_UB_N => SRAM_UB_N, + SRAM_LB_N => SRAM_LB_N, + + clk => clk, + chipselect => chipselect, + write => write, + read => read, + data_in => data_in, + data_out => data_out, + address => address + ); + + address <= "00000100001000000010"; + data_out <= "0010001000010001"; + chipselect <= '1'; + + process + begin + clk <= '0'; + + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + write <= '1'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + read <= '1'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + read <= '1'; + + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + read <= '1'; + wait for 10 ns; + clk <= '1'; + + wait for 10 ns; + clk <= '0'; + read <= '1'; + + wait; + end process; + +end architecture RTL; diff --git a/peripherals/sram/testbench.do b/peripherals/sram/testbench.do new file mode 100644 index 00000000..d0b4cc77 --- /dev/null +++ b/peripherals/sram/testbench.do @@ -0,0 +1,116 @@ + +#****************************************************************************** +# * +# Copyright (C) 2019 IFSC * +# * +# * +# All information provided herein is provided on an "as is" basis, * +# without warranty of any kind. * +# * +# File Name: testbench.do * +# * +# Function: riscv muticycle simulation script * +# * +# REVISION HISTORY: * +# Revision 0.1.0 08/01/2018 - Initial Revision * +#****************************************************************************** + +vlib work +# vcom ./../memory/imemory.vhd +# vcom ./../memory/imemory_load.vhd +vcom ./../../memory/iram_quartus.vhd +vcom ./../../memory/dmemory.vhd +vcom ./../../alu/alu_types.vhd +vcom ./../../alu/alu.vhd +vcom ./../../alu/m/M_types.vhd +vcom ./../../alu/m/M.vhd +vcom ./../../decoder/decoder_types.vhd +vcom ./../../decoder/iregister.vhd +vcom ./../../decoder/decoder.vhd +vcom ./../../registers/register_file.vhd +vcom ./../../core/core.vhd +vcom ./../../core/txt_util.vhdl +vcom ./../../core/trace_debug.vhd +vcom ./sram.vhd + +# vcom ./uart/uart.vhd +# vcom ./vga/vga_controller.vhd ./vga/vga_buffer.vhd +# vcom ./sdram/sim/mti_pkg.vhd ./sdram/sim/mt48lc8m16a2.vhd ./sdram/sdram_controller.vhd +vcom ./testbench.vhd + +vsim -t ns work.coretestbench + +view wave +add wave -radix binary /clk +add wave -radix binary /rst +add wave -height 15 -divider "Instruction Memory" +add wave -label iAddr -radix hex /address +add wave -label iWord -radix hex idata +add wave -label decoded -radix ASCII /debugString +# add wave /debugString +# add wave -radix hex /imem/RAM +# add wave -radix hex /q + +add wave -height 15 -divider "PC and Ctrl Targers" +add wave -radix hex -label pc /myRiscv/pc +add wave -radix hex -label jal_target /myRiscv/jal_target +add wave -radix hex -label jalr_target /myRiscv/jalr_target +add wave -label branch_cmp /myRiscv/branch_cmp + +add wave -height 15 -divider "Iregister debug" +add wave -label opcode /myRiscv/opcodes +add wave -label rd /myRiscv/rd +add wave -label rs1 /myRiscv/rs1 +add wave -label rs2 /myRiscv/rs2 +add wave -label imm_i /myRiscv/imm_i +add wave -label imm_s /myRiscv/imm_s +add wave -label imm_b /myRiscv/imm_b +add wave -label imm_u /myRiscv/imm_u +add wave -label imm_j /myRiscv/imm_j + + +add wave -height 15 -divider "Register file debug" + add wave -label registers -radix hex /myRiscv/registers/ram + add wave -label w_ena /myRiscv/rf_w_ena + add wave -label w_data -radix hex /myRiscv/rw_data + add wave -label r1_data -radix hex /myRiscv/rs1_data + add wave -label r2_data -radix hex /myRiscv/rs2_data + +# decoder debug +add wave -label states /myRiscv/decoder0/state + +# add wave -height 15 -divider "Alu debug" +# add wave -label aluData /myRiscv/alu_data +#add wave -label aluOut /myRiscv/alu_out + +add wave -height 15 -divider "Data memory debug" +add wave -label daddr -radix hex /myRiscv/memAddrTypeSBlock/addr +add wave -label fsm_data -radix hex /dmem/fsm_data +add wave -label ram_data -radix hex /dmem/ram_data +add wave -label mState /dmem/state +add wave -label fsm_we /dmem/fsm_we +add wave -label ddata_r_mem -radix hex /dmem/q +add wave -label datamemory -radix hex /dmem/ram_block + + +add wave -height 15 -divider "Data bus" +add wave -label daddress -radix hex /daddress +add wave -label ddata_r -radix hex /ddata_r +add wave -label ddata_w -radix hex /ddata_w +add wave -label dmask -radix bin /dmask +add wave -label dcsel /dcsel +add wave -label d_we /d_we +add wave -label d_rd /d_rd +add wave -label d_sig /d_sig + +add wave -height 15 -divider "Input/Output SIM" +add wave -label LEDR -radix hex /LEDR +add wave -label ARDUINO_IO -radix hex /ARDUINO_IO + +add wave -label data_out_SRAM /data_out_SRAM +add wave -label data_in_SRAM /data_in_SRAM +add wave -label chipselect /chipselect +add wave -label write /write +add wave -label read /read + +run 950000 ns diff --git a/peripherals/sram/testbench.vhd b/peripherals/sram/testbench.vhd new file mode 100644 index 00000000..916eb927 --- /dev/null +++ b/peripherals/sram/testbench.vhd @@ -0,0 +1,319 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +use work.decoder_types.all; + +entity coretestbench is + generic( + --! Num of 32-bits memory words + IMEMORY_WORDS : integer := 1024; --!= 4K (1024 * 4) bytes + DMEMORY_WORDS : integer := 1024; --!= 2k (512 * 2) bytes + constant SIZE : integer := 8 -- 8 bytes UART package + ); + + port( + ----------- SEG7 ------------ + HEX0 : out std_logic_vector(7 downto 0); + HEX1 : out std_logic_vector(7 downto 0); + HEX2 : out std_logic_vector(7 downto 0); + HEX3 : out std_logic_vector(7 downto 0); + HEX4 : out std_logic_vector(7 downto 0); + HEX5 : out std_logic_vector(7 downto 0); + ----------- SW ------------ + + SW : in std_logic_vector(9 downto 0); + LEDR : out std_logic_vector(9 downto 0); + ---------- ARDUINO IO ----- + ARDUINO_IO : inout std_logic_vector(15 downto 0) + ); + +end entity coretestbench; + +architecture RTL of coretestbench is + signal clk : std_logic; + signal clk_sdram : std_logic; + signal clk_vga : std_logic; + signal rst : std_logic; + signal rst_n : std_logic; + + signal idata : std_logic_vector(31 downto 0); + + signal daddress : natural; + signal ddata_r : std_logic_vector(31 downto 0); + signal ddata_w : std_logic_vector(31 downto 0); + signal dmask : std_logic_vector(3 downto 0); + signal dcsel : std_logic_vector(1 downto 0); + signal d_we : std_logic := '0'; + + signal iaddress : integer range 0 to IMEMORY_WORDS - 1 := 0; + + signal address : std_logic_vector(31 downto 0); + + signal ddata_r_mem : std_logic_vector(31 downto 0); + signal d_rd : std_logic; + + signal input_in : std_logic_vector(31 downto 0); + signal cpu_state : cpu_state_t; + + signal debugString : string(1 to 40) := (others => '0'); + + -- UART Signals + signal clk_baud : std_logic; + signal data_in : std_logic_vector(7 downto 0); + signal tx : std_logic; + signal start : std_logic; + signal tx_cmp : std_logic; + signal data_out : std_logic_vector(SIZE - 1 downto 0); + signal rx : std_logic; + signal rx_cmp : std_logic; + + signal csel_uart : std_logic; + + signal dmemory_address : natural; + signal d_sig : std_logic; + + -- SRAM + signal state : cpu_state_t; + signal chipselect : STD_LOGIC; + signal write : STD_LOGIC; + signal read_address : unsigned(15 downto 0); + signal write_address : unsigned(15 downto 0); + signal q : STD_LOGIC_VECTOR(7 DOWNTO 0); + signal addressram : std_logic_vector(19 downto 0); + + signal clk_ram : std_logic; + signal SRAM_OE_N : std_logic; + signal SRAM_WE_N : std_logic; + signal SRAM_CE_N : std_logic; + signal SRAM_ADDR : std_logic_vector(19 downto 0); + signal SRAM_DQ : std_logic_vector(15 downto 0); + signal SRAM_UB_N : std_logic; + signal SRAM_LB_N : std_logic; + signal data_out_SRAM : STD_LOGIC_VECTOR(31 DOWNTO 0); + signal data_in_SRAM : STD_LOGIC_VECTOR(15 DOWNTO 0); + signal teste : std_logic; + signal read : STD_LOGIC; + +begin + + clock_driver : process + constant period : time := 1000 ns; + begin + clk <= '0'; + wait for period / 2; + clk <= '1'; + wait for period / 2; + end process clock_driver; + + reset : process is + begin + rst <= '1'; + wait for 5 ns; + rst <= '0'; + wait; + end process reset; + + -- Dummy out signals + -- ARDUINO_IO <= ddata_r(31 downto 16); + + -- imem: component imemory + -- generic map( + -- MEMORY_WORDS => IMEMORY_WORDS + -- ) + -- port map( + -- clk => clk, + -- data => idata, + -- write_address => 0, + -- read_address => iaddress, + -- we => '0', + -- q => idata + -- ); + + rst_n <= not rst; + + -- imem: component imemory + -- generic map( + -- MEMORY_WORDS => IMEMORY_WORDS + -- ) + -- port map( + -- clk => clk, + -- data => idata, + -- write_address => 0, + -- read_address => iaddress, + -- we => '0', + -- q => idata + -- ); + + -- IMem shoud be read from instruction and data buses + -- Not enough RAM ports for instruction bus, data bus and in-circuit programming + -- with dcsel select + -- address <= std_logic_vector(to_unsigned(daddress,10)) when "01", + -- std_logic_vector(to_unsigned(iaddress,10)) when others; + process(d_rd, dcsel, daddress, iaddress) + begin + if (d_rd = '1') and (dcsel = "00") then + address <= std_logic_vector(to_unsigned(daddress, 32)); + else + address <= std_logic_vector(to_unsigned(iaddress, 32)); + end if; + end process; + + -- 32-bits x 1024 words quartus RAM (dual port: portA -> riscV, portB -> In-System Mem Editor + iram_quartus_inst : entity work.iram_quartus + port map( + address => address(9 downto 0), + byteena => "1111", + clock => clk, + data => (others => '0'), + wren => '0', + q => idata + ); + + dmemory_address <= to_integer(to_unsigned(daddress, 10)); + -- Data Memory RAM + dmem : entity work.dmemory + generic map( + MEMORY_WORDS => DMEMORY_WORDS + ) + port map( + rst => rst, + clk => clk, + data => ddata_w, + address => dmemory_address, + we => d_we, + signal_ext => d_sig, + csel => dcsel(0), + dmask => dmask, + q => ddata_r_mem + ); + + addressram <= std_logic_vector(to_unsigned(daddress, 21)(19 downto 0)); + + sram : entity work.sram + port map( + SRAM_OE_N => SRAM_OE_N, + SRAM_WE_N => SRAM_WE_N, + SRAM_CE_N => SRAM_CE_N, + SRAM_ADDR => SRAM_ADDR, + SRAM_DQ => SRAM_DQ, + SRAM_UB_N => SRAM_UB_N, + SRAM_LB_N => SRAM_LB_N, + clk => clk, + chipselect => dcsel(0), + write => write, + read => read, + data_out => data_out_SRAM(15 downto 0), + address => addressram, + data_in => data_in_SRAM + ); + + process(clk) + begin + if rising_edge(clk) then + + if (dcsel = "11") then + if(d_we = '1')then + data_out_SRAM <= ddata_w; + end if; + write <= d_we; + read <= d_rd; + + end if; + end if; + end process; + + -- Adress space mux ((check sections.ld) -> Data chip select: + -- 0x00000 -> Instruction memory + -- 0x20000 -> Data memory + -- 0x40000 -> Input/Output generic address space + -- 0x60000 -> SDRAM address space + with dcsel select ddata_r <= + data_out_SRAM when "11",(others => '0') when others; + + -- Softcore instatiation + myRiscv : entity work.core + generic map( + IMEMORY_WORDS => IMEMORY_WORDS, + DMEMORY_WORDS => DMEMORY_WORDS + ) + port map( + clk => clk, + rst => rst, + iaddress => iaddress, + idata => idata, + daddress => daddress, + ddata_r => ddata_r, + ddata_w => ddata_w, + d_we => d_we, + d_rd => d_rd, + d_sig => d_sig, + dcsel => dcsel, + dmask => dmask, + state => cpu_state + ); + + -- Output register (Dummy LED blinky) + process(clk, rst) + begin + if rst = '1' then + LEDR(7 downto 0) <= (others => '0'); + HEX0 <= (others => '1'); + HEX1 <= (others => '1'); + HEX2 <= (others => '1'); + HEX3 <= (others => '1'); + HEX4 <= (others => '1'); + HEX5 <= (others => '1'); + else + if rising_edge(clk) then + if (d_we = '1') and (dcsel = "10") then + -- ToDo: Simplify compartors + -- ToDo: Maybe use byte addressing? + -- x"01" (word addressing) is x"04" (byte addressing) + if to_unsigned(daddress, 32)(8 downto 0) = x"01" then + LEDR(7 downto 0) <= ddata_w(7 downto 0); + elsif to_unsigned(daddress, 32)(8 downto 0) = x"02" then + HEX0 <= ddata_w(7 downto 0); + HEX1 <= ddata_w(15 downto 8); + HEX2 <= ddata_w(23 downto 16); + HEX3 <= ddata_w(31 downto 24); + -- HEX4 <= ddata_w(7 downto 0); + -- HEX5 <= ddata_w(7 downto 0); + end if; + end if; + end if; + end if; + end process; + + -- Input register + process(clk, rst) + begin + if rst = '1' then + input_in <= (others => '0'); + else + + if rising_edge(clk) then + if (d_rd = '1') and (dcsel = "10") then + if to_unsigned(daddress, 32)(8 downto 0) = x"00" then + input_in(4 downto 0) <= SW(4 downto 0); + elsif to_unsigned(daddress, 32)(8 downto 0) = x"04" then + input_in(7 downto 0) <= data_out; + end if; + end if; + end if; + end if; + + end process; + + -- FileOutput DEBUG + debug : entity work.trace_debug + generic map( + MEMORY_WORDS => IMEMORY_WORDS + ) + port map( + pc => iaddress, + data => idata, + inst => debugString + ); + +end architecture RTL;