Archived
1
0

Initial commit

This commit is contained in:
github-classroom[bot]
2024-02-23 13:01:05 +00:00
committed by GitHub
commit d212040c30
1914 changed files with 1290006 additions and 0 deletions

View File

@ -0,0 +1,32 @@
ARCHITECTURE rtl OF dataMemory IS
-- Bank of data
type t_dataBank is array (0 to (2**g_memoryNbBits)-1) of
std_ulogic_vector(g_dataWidth-1 downto 0);
-- A bank of data
signal larr_data: t_dataBank;
BEGIN
process(rst, clk)
begin
if rst = '1' then
larr_data <= (others => (others => '0')) after g_tMemWr;
elsif rising_edge(clk) then
if en = '1' and writeEn = '1' then
-- skip the two last bits (since we do only +4)
larr_data(to_integer(unsigned(
address(g_memoryNbBits+1 downto 2)
))) <= writeData after (g_tMemWr + g_tSetup);
end if;
end if;
end process;
-- Comb. read
-- skip the two last bits (since we do only +4)
readData <= larr_data(to_integer(unsigned(
address(g_memoryNbBits+1 downto 2)
))) after g_tMemRd;
END ARCHITECTURE rtl;

View File

@ -0,0 +1,34 @@
USE std.textio.all;
ARCHITECTURE bin OF instrMemory IS
-- Instructions type
type t_instrBank is array (g_memoryNbBits-1 downto 0) of
std_ulogic_vector(g_dataWidth-1 downto 0);
-- Define function to create initvalue signal
impure function ReadRamContentFromFile(ramContentFilenAme : in string) return t_instrBank is
FILE ramContentFile : text is in ramContentFilenAme;
variable ramContentFileLine : line;
variable ramContent : t_instrBank;
begin
for i in t_instrBank'range loop
readline(ramContentFile, ramContentFileLine);
read(ramContentFileLine, ramContent(i));
end loop;
return ramContent;
end function;
-- Program
constant larr_instr : t_instrBank := ReadRamContentFromFile(g_programFile);
BEGIN
-- Comb. read
process(PC)
begin
-- skip the two last bits (since we do only +4)
instruction <= larr_instr(to_integer(PC(g_memoryNbBits+1 downto 2)));
end process;
END ARCHITECTURE bin;

View File

@ -0,0 +1,36 @@
library ieee;
use std.textio.all;
use ieee.std_logic_textio.all;
ARCHITECTURE hex OF instrMemory IS
-- Instructions type
type t_instrBank is array (0 to (2**g_memoryNbBits)-1) of
std_ulogic_vector(g_dataWidth-1 downto 0);
-- Define function to create initvalue signal
impure function ReadRamContentFromFile(ramContentFilenAme : in string) return t_instrBank is
FILE ramContentFile : text is in ramContentFilenAme;
variable ramContentFileLine : line;
variable ramContent : t_instrBank;
begin
for i in t_instrBank'range loop
readline(ramContentFile, ramContentFileLine);
HREAD(ramContentFileLine, ramContent(i));
end loop;
return ramContent;
end function;
-- Program
constant larr_instr : t_instrBank := ReadRamContentFromFile(g_programFile);
BEGIN
-- Comb. read
process(PC)
begin
-- skip the two last bits (since we do only +4)
instruction <= larr_instr(to_integer(PC(g_memoryNbBits+1 downto 2))) after g_tMemRd;
end process;
END ARCHITECTURE hex;

View File

@ -0,0 +1,24 @@
ARCHITECTURE rtl OF mainDecoder IS
signal lvec_controls : std_ulogic_vector(10 downto 0);
BEGIN
process(op)
begin
case op is
when "0000011" => lvec_controls <= "10010010000"; -- lw
when "0100011" => lvec_controls <= "00111000000"; -- sw
when "0110011" => lvec_controls <= "1--00000100"; -- R-type
when "1100011" => lvec_controls <= "01000001010"; -- beq
when "0010011" => lvec_controls <= "10010000100"; -- I-type ALU
when "1101111" => lvec_controls <= "11100100001"; -- jal
when others => lvec_controls <= "-----------"; -- not valid
end case;
end process;
(regwrite, immSrc(1), immSrc(0), ALUSrc, memWrite, resultSrc(1), resultSrc(0),
branch, ALUOp(1), ALUOp(0), jump) <= lvec_controls after g_tDec;
END ARCHITECTURE rtl;

View File

@ -0,0 +1 @@
DIALECT atom VHDL_2008

View File

@ -0,0 +1,4 @@
DIALECT atom VHDL_2008
INCLUDE list {
DEFAULT atom 1
}

View File

@ -0,0 +1,4 @@
DIALECT atom VHDL_2008
INCLUDE list {
DEFAULT atom 1
}

View File

@ -0,0 +1,4 @@
DIALECT atom VHDL_2008
INCLUDE list {
DEFAULT atom 1
}

View File

@ -0,0 +1,4 @@
DIALECT atom VHDL_2008
INCLUDE list {
DEFAULT atom 1
}

View File

@ -0,0 +1,4 @@
DIALECT atom VHDL_2008
INCLUDE list {
DEFAULT atom 1
}

View File

@ -0,0 +1,4 @@
DIALECT atom VHDL_2008
INCLUDE list {
DEFAULT atom 1
}

View File

@ -0,0 +1,2 @@
DEFAULT_FILE atom rtl_instrMemory.vhd
DEFAULT_ARCHITECTURE atom instrMemory

View File

@ -0,0 +1,2 @@
DEFAULT_ARCHITECTURE atom masterVersion
DEFAULT_FILE atom control@unit/master@version.bd

View File

@ -0,0 +1,2 @@
DEFAULT_ARCHITECTURE atom rtl
DEFAULT_FILE atom dataMemory_rtl.vhd

View File

@ -0,0 +1,3 @@
TOP_MARKER atom 1
DEFAULT_FILE atom heirv32_sc/struct.bd
DEFAULT_ARCHITECTURE atom struct

View File

@ -0,0 +1,2 @@
DEFAULT_ARCHITECTURE atom hex
DEFAULT_FILE atom instrMemory_hex.vhd

View File

@ -0,0 +1,2 @@
DEFAULT_ARCHITECTURE atom rtl
DEFAULT_FILE atom mainDecoder_rtl.vhd

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff