started simulator for DDR RAM
This commit is contained in:
@@ -41,7 +41,7 @@ set_global_assignment -name DEVICE EP3C40F484C6
|
|||||||
set_global_assignment -name TOP_LEVEL_ENTITY firebee
|
set_global_assignment -name TOP_LEVEL_ENTITY firebee
|
||||||
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 13.1
|
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 13.1
|
||||||
set_global_assignment -name PROJECT_CREATION_TIME_DATE "11:04:08 MAY 31, 2014"
|
set_global_assignment -name PROJECT_CREATION_TIME_DATE "11:04:08 MAY 31, 2014"
|
||||||
set_global_assignment -name LAST_QUARTUS_VERSION 13.1
|
set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1"
|
||||||
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
|
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
|
||||||
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
|
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
|
||||||
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
|
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
|
||||||
@@ -670,5 +670,7 @@ set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Firebee_V1/altpll1.cmp
|
|||||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee_V1/Firebee_V1_pkg.vhd
|
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee_V1/Firebee_V1_pkg.vhd
|
||||||
set_global_assignment -name QIP_FILE ../../../rtl/vhdl/Firebee_V1/altpll_reconfig1.qip
|
set_global_assignment -name QIP_FILE ../../../rtl/vhdl/Firebee_V1/altpll_reconfig1.qip
|
||||||
set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN "100 ns"
|
set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN "100 ns"
|
||||||
|
set_global_assignment -name VHDL_FILE ../../../testbenches/ddr_ram_model.vhd
|
||||||
set_global_assignment -name EDA_TEST_BENCH_FILE ../../../testbenches/ddr_ctlr_tb.vhd -section_id ddr_ctlr_tb
|
set_global_assignment -name EDA_TEST_BENCH_FILE ../../../testbenches/ddr_ctlr_tb.vhd -section_id ddr_ctlr_tb
|
||||||
|
set_global_assignment -name EDA_TEST_BENCH_FILE ../../../testbenches/ddr_ram_model.vhd -section_id ddr_ctlr_tb
|
||||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||||
@@ -7,9 +7,11 @@ use ieee.numeric_std.all;
|
|||||||
|
|
||||||
use std.textio.all;
|
use std.textio.all;
|
||||||
|
|
||||||
|
|
||||||
entity ddr_ctlr_tb is
|
entity ddr_ctlr_tb is
|
||||||
end ddr_ctlr_tb;
|
end ddr_ctlr_tb;
|
||||||
|
|
||||||
|
|
||||||
architecture beh of ddr_ctlr_tb is
|
architecture beh of ddr_ctlr_tb is
|
||||||
signal clock : std_logic := '0'; -- main clock
|
signal clock : std_logic := '0'; -- main clock
|
||||||
signal ddr_clk : std_logic := '0'; -- ddr clock
|
signal ddr_clk : std_logic := '0'; -- ddr clock
|
||||||
@@ -99,6 +101,24 @@ architecture beh of ddr_ctlr_tb is
|
|||||||
DATA_EN_L : out std_logic
|
DATA_EN_L : out std_logic
|
||||||
);
|
);
|
||||||
end component;
|
end component;
|
||||||
|
|
||||||
|
component ddr_ram_model
|
||||||
|
port (
|
||||||
|
signal CK : in std_logic;
|
||||||
|
signal CKE : in std_logic;
|
||||||
|
signal CSn : in std_logic;
|
||||||
|
signal RASn : in std_logic;
|
||||||
|
signal CASn : in std_logic;
|
||||||
|
signal WEn : in std_logic;
|
||||||
|
signal LDM : in std_logic;
|
||||||
|
signal UDM : in std_logic;
|
||||||
|
signal BA : in std_logic_vector(1 downto 0);
|
||||||
|
signal A : in std_logic_vector(12 downto 0);
|
||||||
|
signal DQ : inout std_logic_vector(7 downto 0);
|
||||||
|
signal LDQS : inout std_logic;
|
||||||
|
signal UDQS : inout std_logic
|
||||||
|
);
|
||||||
|
end component;
|
||||||
begin
|
begin
|
||||||
t : DDR_CTRL_V1
|
t : DDR_CTRL_V1
|
||||||
port map
|
port map
|
||||||
@@ -144,6 +164,24 @@ begin
|
|||||||
DATA_EN_L => DATA_EN_L
|
DATA_EN_L => DATA_EN_L
|
||||||
);
|
);
|
||||||
|
|
||||||
|
d : ddr_ram_model
|
||||||
|
port map
|
||||||
|
(
|
||||||
|
CK => DDRCLK0,
|
||||||
|
CKE => VCKE,
|
||||||
|
CSn => VCSn,
|
||||||
|
RASn => VRASn,
|
||||||
|
CASn => VCASn,
|
||||||
|
WEn => VWEn,
|
||||||
|
LDM => DATA_EN_L,
|
||||||
|
UDM => DATA_EN_H,
|
||||||
|
BA => BA,
|
||||||
|
A => VA,
|
||||||
|
DQ => SR_VDMP,
|
||||||
|
LDQS => DATA_EN_L,
|
||||||
|
UDQS => DATA_EN_H
|
||||||
|
);
|
||||||
|
|
||||||
stimulate_main_clock : process
|
stimulate_main_clock : process
|
||||||
begin
|
begin
|
||||||
wait for 4.31 ns;
|
wait for 4.31 ns;
|
||||||
@@ -194,3 +232,4 @@ begin
|
|||||||
end case;
|
end case;
|
||||||
end process;
|
end process;
|
||||||
end beh;
|
end beh;
|
||||||
|
|
||||||
|
|||||||
47
vhdl/testbenches/ddr_ram_model.vhd
Normal file
47
vhdl/testbenches/ddr_ram_model.vhd
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
library work;
|
||||||
|
use work.firebee_pkg.all;
|
||||||
|
|
||||||
|
library ieee;
|
||||||
|
use ieee.std_logic_1164.all;
|
||||||
|
use ieee.numeric_std.all;
|
||||||
|
|
||||||
|
use std.textio.all;
|
||||||
|
|
||||||
|
-- DDR ram simulation for Firebee video RAM
|
||||||
|
|
||||||
|
entity ddr_ram_model is
|
||||||
|
port (
|
||||||
|
signal CK : in std_logic;
|
||||||
|
signal CKE : in std_logic;
|
||||||
|
signal CSn : in std_logic;
|
||||||
|
signal RASn : in std_logic;
|
||||||
|
signal CASn : in std_logic;
|
||||||
|
signal WEn : in std_logic;
|
||||||
|
signal LDM : in std_logic;
|
||||||
|
signal UDM : in std_logic;
|
||||||
|
signal BA : in std_logic_vector(1 downto 0);
|
||||||
|
signal A : in std_logic_vector(12 downto 0);
|
||||||
|
signal DQ : inout std_logic_vector(7 downto 0);
|
||||||
|
signal LDQS : inout std_logic;
|
||||||
|
signal UDQS : inout std_logic
|
||||||
|
);
|
||||||
|
end entity ddr_ram_model;
|
||||||
|
|
||||||
|
architecture behav of ddr_ram_model is
|
||||||
|
signal opcode : std_logic_vector(14 downto 0);
|
||||||
|
signal command : std_logic_vector(5 downto 0);
|
||||||
|
signal OLD_CKE : std_logic := 'X';
|
||||||
|
begin
|
||||||
|
opcode <= BA & A(10) & A(12 downto 11) & A(9 downto 0);
|
||||||
|
command <= OLD_CKE & CKE & CSn & RASn & CASn & WEn;
|
||||||
|
clock_hi : process
|
||||||
|
begin
|
||||||
|
wait until rising_edge(CK) and CK = '1';
|
||||||
|
|
||||||
|
end process;
|
||||||
|
|
||||||
|
clock_lo : process
|
||||||
|
begin
|
||||||
|
wait until falling_edge(CK) and CK = '0';
|
||||||
|
end process;
|
||||||
|
end behav;
|
||||||
Reference in New Issue
Block a user