Project

General

Profile

« Previous | Next » 

Revision 453

Added by markw over 9 years ago

Plugged in the sram model to check timings

View differences:

ultimate_cart/veronica/cpu65816.wcfg
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="40" />
<WVObjectSize size="49" />
<wvobject fp_name="/veronica_tb/thebigone/cpu_65816_rob/rst" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rst</obj_property>
<obj_property name="ObjectShortName">rst</obj_property>
......
<obj_property name="ElementShortName">clk</obj_property>
<obj_property name="ObjectShortName">clk</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/thebigone/cpu_65816_rob/state" type="array" db_ref_id="1">
<obj_property name="ElementShortName">state[5:0]</obj_property>
<obj_property name="ObjectShortName">state[5:0]</obj_property>
</wvobject>
<wvobject fp_name="divider60" type="divider">
<obj_property name="label">Input</obj_property>
<obj_property name="DisplayName">label</obj_property>
......
<obj_property name="ObjectShortName">ad[23:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/thebigone/cpu_65816_rob/ado" type="array" db_ref_id="1">
<obj_property name="ElementShortName">ado[23:0]</obj_property>
<obj_property name="ObjectShortName">ado[23:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/thebigone/cpu_65816_rob/sp" type="array" db_ref_id="1">
<obj_property name="ElementShortName">sp[15:0]</obj_property>
<obj_property name="ObjectShortName">sp[15:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/thebigone/cpu_65816_rob/dw" type="array" db_ref_id="1">
<obj_property name="ElementShortName">dw[7:0]</obj_property>
<obj_property name="ObjectShortName">dw[7:0]</obj_property>
......
<wvobject fp_name="/veronica_tb/thebigone/glue6/sram_addr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">sram_addr[19:0]</obj_property>
<obj_property name="ObjectShortName">sram_addr[19:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/thebigone/glue6/sram_data_out" type="array" db_ref_id="1">
<obj_property name="ElementShortName">sram_data_out[7:0]</obj_property>
<obj_property name="ObjectShortName">sram_data_out[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/thebigone/glue6/sram_drive_data" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">sram_drive_data</obj_property>
......
<obj_property name="ElementShortName">sram_we_n</obj_property>
<obj_property name="ObjectShortName">sram_we_n</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/sram_model/nwe" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">nwe</obj_property>
<obj_property name="ObjectShortName">nwe</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/sram_model/nce" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">nce</obj_property>
<obj_property name="ObjectShortName">nce</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/sram_model/noe" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">noe</obj_property>
<obj_property name="ObjectShortName">noe</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/sram_model/a" type="array" db_ref_id="1">
<obj_property name="ElementShortName">a[16:0]</obj_property>
<obj_property name="ObjectShortName">a[16:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/sram_model/d" type="array" db_ref_id="1">
<obj_property name="ElementShortName">d[7:0]</obj_property>
<obj_property name="ObjectShortName">d[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/veronica_tb/sram_model/read_active" type="other" db_ref_id="1">
<obj_property name="ElementShortName">read_active</obj_property>
<obj_property name="ObjectShortName">read_active</obj_property>
</wvobject>
</wave_config>
ultimate_cart/veronica/tb_veronica/sram.vhd
undef_adr_vec;
read_active <= ( (nOE = '0') AND (nOE'DELAYED(tLZOE_min) = '0') AND nOE'STABLE(tLZOE_min)
AND ((nWE = '1') OR (nWE'DELAYED(tHZWE_max) = '0'))
AND ((nWE = '1') OR (nWE'DELAYED(tHZWE_max) = '1'))
AND (nCE = '0') AND (CE2 = '1') AND nCE'STABLE(tLZCE_min) AND CE2'STABLE(tLZCE_min))
OR (read_active AND (nOE'DELAYED(tHZOE_max) = '0')
AND (nWE'DELAYED(tHZWE_max) = '1')
ultimate_cart/veronica/tb_veronica/veronica_tb.vhd
CART_S5 <= bus_s5_n when bus_control_oe='1' else 'Z';
CART_CTL <= bus_cctl_n when bus_control_oe='1' else 'Z';
-- sram_model : entity work.sram
-- generic map
-- (
-- clear_on_power_up: boolean := FALSE; -- if TRUE, RAM is initialized with zeroes at start of simulation
-- -- Clearing of RAM is carried out before download takes place
--
-- download_on_power_up: boolean := TRUE; -- if TRUE, RAM is downloaded at start of simulation
--
-- trace_ram_load: boolean := TRUE; -- Echoes the data downloaded to the RAM on the screen
-- -- (included for debugging purposes)
--
--
-- enable_nWE_only_control: boolean := TRUE; -- Read-/write access controlled by nWE only
-- -- nOE may be kept active all the time
--
--
--
-- -- Configuring RAM size
--
-- size: INTEGER := 8; -- number of memory words
-- adr_width: INTEGER := 3; -- number of address bits
-- width: INTEGER := 8; -- number of bits per memory word
--
--
-- -- READ-cycle timing parameters
--
-- tAA_max: TIME := 20 NS; -- Address Access Time
-- tOHA_min: TIME := 3 NS; -- Output Hold Time
-- tACE_max: TIME := 20 NS; -- nCE/CE2 Access Time
-- tDOE_max: TIME := 8 NS; -- nOE Access Time
-- tLZOE_min: TIME := 0 NS; -- nOE to Low-Z Output
-- tHZOE_max: TIME := 8 NS; -- OE to High-Z Output
-- tLZCE_min: TIME := 3 NS; -- nCE/CE2 to Low-Z Output
-- tHZCE_max: TIME := 10 NS; -- CE/nCE2 to High Z Output
--
--
-- -- WRITE-cycle timing parameters
--
-- tWC_min: TIME := 20 NS; -- Write Cycle Time
-- tSCE_min: TIME := 18 NS; -- nCE/CE2 to Write End
-- tAW_min: TIME := 15 NS; -- tAW Address Set-up Time to Write End
-- tHA_min: TIME := 0 NS; -- tHA Address Hold from Write End
-- tSA_min: TIME := 0 NS; -- Address Set-up Time
-- tPWE_min: TIME := 13 NS; -- nWE Pulse Width
-- tSD_min: TIME := 10 NS; -- Data Set-up to Write End
-- tHD_min: TIME := 0 NS; -- Data Hold from Write End
-- tHZWE_max: TIME := 10 NS; -- nWE Low to High-Z Output
-- tLZWE_min: TIME := 0 NS -- nWE High to Low-Z Output
-- );
-- port map
-- (
-- nCE: IN std_logic := '1'; -- low-active Chip-Enable of the SRAM device; defaults to '1' (inactive)
-- nOE: IN std_logic := '1'; -- low-active Output-Enable of the SRAM device; defaults to '1' (inactive)
-- nWE: IN std_logic := '1'; -- low-active Write-Enable of the SRAM device; defaults to '1' (inactive)
--
-- A: IN std_logic_vector(adr_width-1 downto 0); -- address bus of the SRAM device
-- D: INOUT std_logic_vector(width-1 downto 0); -- bidirectional data bus to/from the SRAM device
--
-- CE2: IN std_logic := '1'; -- high-active Chip-Enable of the SRAM device; defaults to '1' (active)
--
--
-- download: IN boolean := FALSE; -- A FALSE-to-TRUE transition on this signal downloads the data
-- -- in file specified by download_filename to the RAM
--
-- download_filename: IN string := "sram_load.dat"; -- name of the download source file
-- -- Passing the filename via a port of type
-- -- ********** string may cause a problem with some
-- -- WATCH OUT! simulators. The string signal assigned
-- -- ********** to the port at least should have the
-- -- same length as the default value.
--
-- dump: IN boolean := FALSE; -- A FALSE-to-TRUE transition on this signal dumps
-- -- the current content of the memory to the file
-- -- specified by dump_filename.
-- dump_start: IN natural := 0; -- Written to the dump-file are the memory words from memory address
-- dump_end: IN natural := size-1; -- dump_start to address dump_end (default: all addresses)
--
-- dump_filename: IN string := "sram_dump.dat" -- name of the dump destination file
-- -- (See note at port download_filename)
-- );
sram_model : entity work.sram
generic map
(
clear_on_power_up => TRUE,
-- Clearing of RAM is carried out before download takes place
download_on_power_up => FALSE, -- if TRUE, RAM is downloaded at start of simulation
trace_ram_load => TRUE, -- Echoes the data downloaded to the RAM on the screen
-- (included for debugging purposes)
enable_nWE_only_control => TRUE, -- Read-/write access controlled by nWE only
-- nOE may be kept active all the time
-- Configuring RAM size
size => 131072, -- number of memory words
adr_width => 17, -- number of address bits
width => 8, -- number of bits per memory word
-- READ-cycle timing parameters
tAA_max => 55 NS, -- Address Access Time
tOHA_min => 3 NS, -- Output Hold Time
tACE_max => 55 NS, -- nCE/CE2 Access Time
tDOE_max => 30 NS, -- nOE Access Time
tLZOE_min=> 5 NS, -- nOE to Low-Z Output
tHZOE_max=> 20 NS, -- OE to High-Z Output
tLZCE_min=> 10 NS, -- nCE/CE2 to Low-Z Output
tHZCE_max=> 20 NS, -- CE/nCE2 to High Z Output
-- WRITE-cycle timing parameters
tWC_min => 55 NS, -- Write Cycle Time
tSCE_min=> 50 NS, -- nCE/CE2 to Write End
tAW_min => 50 NS, -- tAW Address Set-up Time to Write End
tHA_min => 0 NS, -- tHA Address Hold from Write End
tSA_min => 0 NS, -- Address Set-up Time
tPWE_min=> 45 NS, -- nWE Pulse Width
tSD_min => 25 NS, -- Data Set-up to Write End
tHD_min => 0 NS, -- Data Hold from Write End
tHZWE_max=> 20 NS, -- nWE Low to High-Z Output
tLZWE_min=> 0 NS -- nWE High to Low-Z Output
)
--signal EXT_SRAM_ADDR: std_logic_vector(19 downto 0);
--signal EXT_SRAM_DATA: std_logic_vector(7 downto 0);
--signal EXT_SRAM_CE: std_logic;
--signal EXT_SRAM_OE: std_logic;
--signal EXT_SRAM_WE: std_logic;
port map
(
nCE => EXT_SRAM_CE,
nOE => EXT_SRAM_OE,
nWE => EXT_SRAM_WE,
A => EXT_SRAM_ADDR(16 downto 0),
D => EXT_SRAM_DATA
);
end rtl;

Also available in: Unified diff