URL
https://opencores.org/ocsvn/w11/w11/trunk
Subversion Repositories w11
Compare Revisions
- This comparison shows the changes necessary to convert path
/w11/tags/w11a_V0.61/rtl/bplib/s3board
- from Rev 25 to Rev 26
- ↔ Reverse comparison
Rev 25 → Rev 26
/tb/Makefile
0,0 → 1,44
# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $ |
# |
# Revision History: |
# Date Rev Version Comment |
# 2014-07-27 545 1.3.1 make reference board configurable via XTW_BOARD |
# 2011-08-13 405 1.3 use includes from rtl/make |
# 2010-05-16 291 1.2.2 rename tb_memctl_s3sram->tb_s3_sram_memctl |
# 2010-05-01 286 1.2.1 add tb_s3board_usp_dummy |
# 2009-11-21 252 1.2 add ISim support |
# 2007-11-26 98 1.1 use make includes |
# 2007-09-23 84 1.0 Initial version |
# |
EXE_all = tb_s3board_dummy |
EXE_all += tb_s3board_fusp_dummy |
EXE_all += tb_s3_sram_memctl |
# |
ifndef XTW_BOARD |
XTW_BOARD=s3board |
endif |
include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk |
# |
.PHONY : all all_ssim all_tsim clean |
# |
all : $(EXE_all) |
all_ssim : $(EXE_all:=_ssim) |
all_tsim : $(EXE_all:=_tsim) |
# |
clean : ise_clean ghdl_clean isim_clean |
# |
#----- |
# |
include $(RETROBASE)/rtl/make/generic_ghdl.mk |
include $(RETROBASE)/rtl/make/generic_isim.mk |
include $(RETROBASE)/rtl/make/generic_xflow.mk |
# |
VBOM_all = $(wildcard *.vbom) |
# |
ifndef DONTINCDEP |
include $(VBOM_all:.vbom=.dep_xst) |
include $(VBOM_all:.vbom=.dep_ghdl) |
include $(VBOM_all:.vbom=.dep_isim) |
include $(wildcard *.o.dep_ghdl) |
endif |
# |
/tb/tb_s3board_fusp.vhd
0,0 → 1,233
-- $Id: tb_s3board_fusp.vhd 476 2013-01-26 22:23:53Z mueller $ |
-- |
-- Copyright 2010-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
-- Software Foundation, either version 2, or at your option any later version. |
-- |
-- This program is distributed in the hope that it will be useful, but |
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY |
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
-- for complete details. |
-- |
------------------------------------------------------------------------------ |
-- Module Name: tb_s3board_fusp - sim |
-- Description: Test bench for s3board (base+fusp) |
-- |
-- Dependencies: simlib/simclk |
-- simlib/simclkcnt |
-- rlink/tb/tbcore_rlink |
-- tb_s3board_core |
-- s3board_fusp_aif [UUT] |
-- serport/serport_uart_rxtx |
-- |
-- To test: generic, any s3board_fusp_aif target |
-- |
-- Target Devices: generic |
-- Tool versions: xst 8.2, 9.1, 9.2, 11.4, 12.1, 13.1; ghdl 0.18-0.29 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2011-12-23 444 3.1 new system clock scheme, new tbcore_rlink iface |
-- 2011-11-19 427 3.0.1 now numeric_std clean |
-- 2010-12-30 351 3.0 use rlink/tb now |
-- 2010-11-06 336 1.0.4 rename input pin CLK -> I_CLK50 |
-- 2010-05-21 292 1.0.3 rename _PM1_ -> _FUSP_ |
-- 2010-05-16 291 1.0.2 rename tb_s3board_usp->tb_s3board_fusp |
-- 2010-05-02 287 1.0.1 add sbaddr_portsel def, now sbus addr 8 |
-- 2010-05-01 286 1.0 Initial version (derived from tb_s3board) |
------------------------------------------------------------------------------ |
|
library ieee; |
use ieee.std_logic_1164.all; |
use ieee.numeric_std.all; |
use ieee.std_logic_textio.all; |
use std.textio.all; |
|
use work.slvtypes.all; |
use work.rlinklib.all; |
use work.rlinktblib.all; |
use work.serportlib.all; |
use work.s3boardlib.all; |
use work.simlib.all; |
use work.simbus.all; |
|
entity tb_s3board_fusp is |
end tb_s3board_fusp; |
|
architecture sim of tb_s3board_fusp is |
|
signal CLK : slbit := '0'; |
|
signal CLK_STOP : slbit := '0'; |
signal CLK_CYCLE : integer := 0; |
|
signal RESET : slbit := '0'; |
signal CLKDIV : slv2 := "00"; -- run with 1 clocks / bit !! |
signal RXDATA : slv8 := (others=>'0'); |
signal RXVAL : slbit := '0'; |
signal RXERR : slbit := '0'; |
signal RXACT : slbit := '0'; |
signal TXDATA : slv8 := (others=>'0'); |
signal TXENA : slbit := '0'; |
signal TXBUSY : slbit := '0'; |
|
signal RX_HOLD : slbit := '0'; |
|
signal I_RXD : slbit := '1'; |
signal O_TXD : slbit := '1'; |
signal I_SWI : slv8 := (others=>'0'); |
signal I_BTN : slv4 := (others=>'0'); |
signal O_LED : slv8 := (others=>'0'); |
signal O_ANO_N : slv4 := (others=>'0'); |
signal O_SEG_N : slv8 := (others=>'0'); |
|
signal O_MEM_CE_N : slv2 := (others=>'1'); |
signal O_MEM_BE_N : slv4 := (others=>'1'); |
signal O_MEM_WE_N : slbit := '1'; |
signal O_MEM_OE_N : slbit := '1'; |
signal O_MEM_ADDR : slv18 := (others=>'Z'); |
signal IO_MEM_DATA : slv32 := (others=>'0'); |
|
signal O_FUSP_RTS_N : slbit := '0'; |
signal I_FUSP_CTS_N : slbit := '0'; |
signal I_FUSP_RXD : slbit := '1'; |
signal O_FUSP_TXD : slbit := '1'; |
|
signal UART_RESET : slbit := '0'; |
signal UART_RXD : slbit := '1'; |
signal UART_TXD : slbit := '1'; |
signal CTS_N : slbit := '0'; |
signal RTS_N : slbit := '0'; |
|
signal R_PORTSEL : slbit := '0'; |
|
constant sbaddr_portsel: slv8 := slv(to_unsigned( 8,8)); |
|
constant clock_period : time := 20 ns; |
constant clock_offset : time := 200 ns; |
|
begin |
|
CLKGEN : simclk |
generic map ( |
PERIOD => clock_period, |
OFFSET => clock_offset) |
port map ( |
CLK => CLK, |
CLK_STOP => CLK_STOP |
); |
|
CLKCNT : simclkcnt port map (CLK => CLK, CLK_CYCLE => CLK_CYCLE); |
|
TBCORE : tbcore_rlink |
port map ( |
CLK => CLK, |
CLK_STOP => CLK_STOP, |
RX_DATA => TXDATA, |
RX_VAL => TXENA, |
RX_HOLD => RX_HOLD, |
TX_DATA => RXDATA, |
TX_ENA => RXVAL |
); |
|
RX_HOLD <= TXBUSY or RTS_N; -- back preasure for data flow to tb |
|
S3CORE : entity work.tb_s3board_core |
port map ( |
I_SWI => I_SWI, |
I_BTN => I_BTN, |
O_MEM_CE_N => O_MEM_CE_N, |
O_MEM_BE_N => O_MEM_BE_N, |
O_MEM_WE_N => O_MEM_WE_N, |
O_MEM_OE_N => O_MEM_OE_N, |
O_MEM_ADDR => O_MEM_ADDR, |
IO_MEM_DATA => IO_MEM_DATA |
); |
|
UUT : s3board_fusp_aif |
port map ( |
I_CLK50 => CLK, |
I_RXD => I_RXD, |
O_TXD => O_TXD, |
I_SWI => I_SWI, |
I_BTN => I_BTN, |
O_LED => O_LED, |
O_ANO_N => O_ANO_N, |
O_SEG_N => O_SEG_N, |
O_MEM_CE_N => O_MEM_CE_N, |
O_MEM_BE_N => O_MEM_BE_N, |
O_MEM_WE_N => O_MEM_WE_N, |
O_MEM_OE_N => O_MEM_OE_N, |
O_MEM_ADDR => O_MEM_ADDR, |
IO_MEM_DATA => IO_MEM_DATA, |
O_FUSP_RTS_N => O_FUSP_RTS_N, |
I_FUSP_CTS_N => I_FUSP_CTS_N, |
I_FUSP_RXD => I_FUSP_RXD, |
O_FUSP_TXD => O_FUSP_TXD |
); |
|
UART : serport_uart_rxtx |
generic map ( |
CDWIDTH => CLKDIV'length) |
port map ( |
CLK => CLK, |
RESET => UART_RESET, |
CLKDIV => CLKDIV, |
RXSD => UART_RXD, |
RXDATA => RXDATA, |
RXVAL => RXVAL, |
RXERR => RXERR, |
RXACT => RXACT, |
TXSD => UART_TXD, |
TXDATA => TXDATA, |
TXENA => TXENA, |
TXBUSY => TXBUSY |
); |
|
proc_port_mux: process (R_PORTSEL, UART_TXD, CTS_N, |
O_TXD, O_FUSP_TXD, O_FUSP_RTS_N) |
begin |
|
if R_PORTSEL = '0' then -- use main board rs232, no flow cntl |
I_RXD <= UART_TXD; -- write port 0 inputs |
UART_RXD <= O_TXD; -- get port 0 outputs |
RTS_N <= '0'; |
I_FUSP_RXD <= '1'; -- port 1 inputs to idle state |
I_FUSP_CTS_N <= '0'; |
else -- otherwise use pmod1 rs232 |
I_FUSP_RXD <= UART_TXD; -- write port 1 inputs |
I_FUSP_CTS_N <= CTS_N; |
UART_RXD <= O_FUSP_TXD; -- get port 1 outputs |
RTS_N <= O_FUSP_RTS_N; |
I_RXD <= '1'; -- port 0 inputs to idle state |
end if; |
|
end process proc_port_mux; |
|
proc_moni: process |
variable oline : line; |
begin |
|
loop |
wait until rising_edge(CLK); |
|
if RXERR = '1' then |
writetimestamp(oline, CLK_CYCLE, " : seen RXERR=1"); |
writeline(output, oline); |
end if; |
|
end loop; |
|
end process proc_moni; |
|
proc_simbus: process (SB_VAL) |
begin |
if SB_VAL'event and to_x01(SB_VAL)='1' then |
if SB_ADDR = sbaddr_portsel then |
R_PORTSEL <= to_x01(SB_DATA(0)); |
end if; |
end if; |
end process proc_simbus; |
|
end sim; |
/tb/tb_s3board_fusp.vbom
0,0 → 1,22
# Not meant for direct top level usage. Used with |
# tb_s3board_fusp_(....)[_ssim].vbom and config |
# lines to generate the different cases. |
# |
# libs |
../../../vlib/slvtypes.vhd |
../../../vlib/rlink/rlinklib.vbom |
../../../vlib/rlink/tb/rlinktblib.vhd |
../../../vlib/serport/serportlib.vbom |
../s3boardlib.vbom |
../../../vlib/simlib/simlib.vhd |
../../../vlib/simlib/simbus.vhd |
# components |
../../../vlib/simlib/simclk.vbom |
../../../vlib/simlib/simclkcnt.vbom |
../../../vlib/rlink/tb/tbcore_rlink.vbom |
tb_s3board_core.vbom |
../../../vlib/serport/serport_uart_rxtx.vbom |
${s3board_fusp_aif := s3board_fusp_dummy.vbom} |
# design |
tb_s3board_fusp.vhd |
@top:tb_s3board_fusp |
/tb/tb_s3board_core.vhd
0,0 → 1,101
-- $Id: tb_s3board_core.vhd 476 2013-01-26 22:23:53Z mueller $ |
-- |
-- Copyright 2010-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
-- Software Foundation, either version 2, or at your option any later version. |
-- |
-- This program is distributed in the hope that it will be useful, but |
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY |
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
-- for complete details. |
-- |
------------------------------------------------------------------------------ |
-- Module Name: tb_s3board_core - sim |
-- Description: Test bench for s3board - core device handling |
-- |
-- Dependencies: vlib/parts/issi/is61lv25616al |
-- |
-- To test: generic, any s3board target |
-- |
-- Target Devices: generic |
-- Tool versions: xst 11.4, 13.1; ghdl 0.26-0.29 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2011-11-19 427 1.0.2 now numeric_std clean |
-- 2010-05-02 287 1.0.1 add sbaddr_(swi|btn) defs, now sbus addr 16,17 |
-- 2010-04-24 282 1.0 Initial version (from vlib/s3board/tb/tb_s3board) |
------------------------------------------------------------------------------ |
|
library ieee; |
use ieee.std_logic_1164.all; |
use ieee.numeric_std.all; |
use ieee.std_logic_textio.all; |
use std.textio.all; |
|
use work.slvtypes.all; |
use work.serportlib.all; |
use work.simbus.all; |
|
entity tb_s3board_core is |
port ( |
I_SWI : out slv8; -- s3 switches |
I_BTN : out slv4; -- s3 buttons |
O_MEM_CE_N : in slv2; -- sram: chip enables (act.low) |
O_MEM_BE_N : in slv4; -- sram: byte enables (act.low) |
O_MEM_WE_N : in slbit; -- sram: write enable (act.low) |
O_MEM_OE_N : in slbit; -- sram: output enable (act.low) |
O_MEM_ADDR : in slv18; -- sram: address lines |
IO_MEM_DATA : inout slv32 -- sram: data lines |
); |
end tb_s3board_core; |
|
architecture sim of tb_s3board_core is |
|
signal R_SWI : slv8 := (others=>'0'); |
signal R_BTN : slv4 := (others=>'0'); |
|
constant sbaddr_swi: slv8 := slv(to_unsigned( 16,8)); |
constant sbaddr_btn: slv8 := slv(to_unsigned( 17,8)); |
|
begin |
|
MEM_L : entity work.is61lv25616al |
port map ( |
CE_N => O_MEM_CE_N(0), |
OE_N => O_MEM_OE_N, |
WE_N => O_MEM_WE_N, |
UB_N => O_MEM_BE_N(1), |
LB_N => O_MEM_BE_N(0), |
ADDR => O_MEM_ADDR, |
DATA => IO_MEM_DATA(15 downto 0) |
); |
|
MEM_U : entity work.is61lv25616al |
port map ( |
CE_N => O_MEM_CE_N(1), |
OE_N => O_MEM_OE_N, |
WE_N => O_MEM_WE_N, |
UB_N => O_MEM_BE_N(3), |
LB_N => O_MEM_BE_N(2), |
ADDR => O_MEM_ADDR, |
DATA => IO_MEM_DATA(31 downto 16) |
); |
|
proc_simbus: process (SB_VAL) |
begin |
if SB_VAL'event and to_x01(SB_VAL)='1' then |
if SB_ADDR = sbaddr_swi then |
R_SWI <= to_x01(SB_DATA(R_SWI'range)); |
end if; |
if SB_ADDR = sbaddr_btn then |
R_BTN <= to_x01(SB_DATA(R_BTN'range)); |
end if; |
end if; |
end process proc_simbus; |
|
I_SWI <= R_SWI; |
I_BTN <= R_BTN; |
|
end sim; |
/tb/tb_s3board_core.vbom
0,0 → 1,10
# libs |
../../../vlib/slvtypes.vhd |
../../../vlib/serport/serportlib.vbom |
../../../vlib/simlib/simbus.vhd |
# components |
../../../vlib/serport/serport_uart_rx.vbom |
../../../vlib/serport/serport_uart_tx.vbom |
../../issi/is61lv25616al.vbom |
# design |
tb_s3board_core.vhd |
/tb/tb_s3_sram_memctl.vbom
0,0 → 1,11
# libs |
../../../vlib/slvtypes.vhd |
../s3boardlib.vbom |
../../../vlib/simlib/simlib.vhd |
# components |
../../../vlib/simlib/simclk.vbom |
../../../vlib/simlib/simclkcnt.vbom |
../../issi/is61lv25616al.vbom |
${uut := ../s3_sram_memctl.vbom} |
# design |
tb_s3_sram_memctl.vhd |
/tb/tb_s3_sram_memctl.vhd
0,0 → 1,356
-- $Id: tb_s3_sram_memctl.vhd 444 2011-12-25 10:04:58Z mueller $ |
-- |
-- Copyright 2007-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
-- Software Foundation, either version 2, or at your option any later version. |
-- |
-- This program is distributed in the hope that it will be useful, but |
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY |
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
-- for complete details. |
-- |
------------------------------------------------------------------------------ |
-- Module Name: tb_s3_sram_memctl - sim |
-- Description: Test bench for s3_sram_memctl |
-- |
-- Dependencies: vlib/simlib/simclk |
-- vlib/simlib/simclkcnt |
-- bplib/issi/is61lv25616al |
-- s3_sram_memctl [UUT] |
-- |
-- To test: s3_sram_memctl |
-- |
-- Verified (with tb_s3_sram_memctl_stim.dat): |
-- Date Rev Code ghdl ise Target Comment |
-- 2007-12-16 101 _ssim 0.26 8.1.03 I27 xc3s1000 c:ok |
-- 2007-12-16 101 - 0.26 - - c:ok |
-- |
-- Target Devices: generic |
-- Tool versions: xst 8.2, 9.1, 9.2, 13.1; ghdl 0.18-0.29 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2011-12-23 444 1.1 use new simclk/simclkcnt |
-- 2011-11-21 432 1.0.6 now numeric_std clean |
-- 2010-05-23 293 1.0.5 output # busy cycles; change CHK pipeline logic |
-- 2010-05-16 291 1.0.4 rename tb_memctl_s3sram->tb_s3_sram_memctl |
-- 2008-03-24 129 1.0.3 CLK_CYCLE now 31 bits |
-- 2008-02-17 117 1.0.2 use req,we rather req_r,req_w interface |
-- 2008-01-20 113 1.0.1 rename memdrv -> memctl_s3sram |
-- 2007-12-15 101 1.0 Initial version |
------------------------------------------------------------------------------ |
|
library ieee; |
use ieee.std_logic_1164.all; |
use ieee.numeric_std.all; |
use ieee.std_logic_textio.all; |
use std.textio.all; |
|
use work.slvtypes.all; |
use work.s3boardlib.all; |
use work.simlib.all; |
|
entity tb_s3_sram_memctl is |
end tb_s3_sram_memctl; |
|
architecture sim of tb_s3_sram_memctl is |
|
signal CLK : slbit := '0'; |
signal RESET : slbit := '0'; |
signal REQ : slbit := '0'; |
signal WE : slbit := '0'; |
signal BUSY : slbit := '0'; |
signal ACK_R : slbit := '0'; |
signal ACK_W : slbit := '0'; |
signal ACT_R : slbit := '0'; |
signal ACT_W : slbit := '0'; |
signal ADDR : slv18 := (others=>'0'); |
signal BE : slv4 := (others=>'0'); |
signal DI : slv32 := (others=>'0'); |
signal DO : slv32 := (others=>'0'); |
signal O_MEM_CE_N : slv2 := (others=>'0'); |
signal O_MEM_BE_N : slv4 := (others=>'0'); |
signal O_MEM_WE_N : slbit := '0'; |
signal O_MEM_OE_N : slbit := '0'; |
signal O_MEM_ADDR : slv18 := (others=>'0'); |
signal IO_MEM_DATA : slv32 := (others=>'0'); |
|
signal R_MEMON : slbit := '0'; |
signal N_CHK_DATA : slbit := '0'; |
signal N_REF_DATA : slv32 := (others=>'0'); |
signal N_REF_ADDR : slv18 := (others=>'0'); |
signal R_CHK_DATA_AL : slbit := '0'; |
signal R_REF_DATA_AL : slv32 := (others=>'0'); |
signal R_REF_ADDR_AL : slv18 := (others=>'0'); |
signal R_CHK_DATA_DL : slbit := '0'; |
signal R_REF_DATA_DL : slv32 := (others=>'0'); |
signal R_REF_ADDR_DL : slv18 := (others=>'0'); |
|
signal CLK_STOP : slbit := '0'; |
signal CLK_CYCLE : integer := 0; |
|
constant clock_period : time := 20 ns; |
constant clock_offset : time := 200 ns; |
constant setup_time : time := 5 ns; |
constant c2out_time : time := 10 ns; |
|
begin |
|
CLKGEN : simclk |
generic map ( |
PERIOD => clock_period, |
OFFSET => clock_offset) |
port map ( |
CLK => CLK, |
CLK_STOP => CLK_STOP |
); |
|
CLKCNT : simclkcnt port map (CLK => CLK, CLK_CYCLE => CLK_CYCLE); |
|
MEM_L : entity work.is61lv25616al |
port map ( |
CE_N => O_MEM_CE_N(0), |
OE_N => O_MEM_OE_N, |
WE_N => O_MEM_WE_N, |
UB_N => O_MEM_BE_N(1), |
LB_N => O_MEM_BE_N(0), |
ADDR => O_MEM_ADDR, |
DATA => IO_MEM_DATA(15 downto 0) |
); |
|
MEM_U : entity work.is61lv25616al |
port map ( |
CE_N => O_MEM_CE_N(1), |
OE_N => O_MEM_OE_N, |
WE_N => O_MEM_WE_N, |
UB_N => O_MEM_BE_N(3), |
LB_N => O_MEM_BE_N(2), |
ADDR => O_MEM_ADDR, |
DATA => IO_MEM_DATA(31 downto 16) |
); |
|
UUT : s3_sram_memctl |
port map ( |
CLK => CLK, |
RESET => RESET, |
REQ => REQ, |
WE => WE, |
BUSY => BUSY, |
ACK_R => ACK_R, |
ACK_W => ACK_W, |
ACT_R => ACT_R, |
ACT_W => ACT_W, |
ADDR => ADDR, |
BE => BE, |
DI => DI, |
DO => DO, |
O_MEM_CE_N => O_MEM_CE_N, |
O_MEM_BE_N => O_MEM_BE_N, |
O_MEM_WE_N => O_MEM_WE_N, |
O_MEM_OE_N => O_MEM_OE_N, |
O_MEM_ADDR => O_MEM_ADDR, |
IO_MEM_DATA => IO_MEM_DATA |
); |
|
proc_stim: process |
file fstim : text open read_mode is "tb_s3_sram_memctl_stim"; |
variable iline : line; |
variable oline : line; |
variable ok : boolean; |
variable dname : string(1 to 6) := (others=>' '); |
variable idelta : integer := 0; |
variable iaddr : slv18 := (others=>'0'); |
variable idata : slv32 := (others=>'0'); |
variable ibe : slv4 := (others=>'0'); |
variable ival : slbit := '0'; |
variable nbusy : integer := 0; |
|
begin |
|
wait for clock_offset - setup_time; |
|
file_loop: while not endfile(fstim) loop |
|
readline (fstim, iline); |
|
readcomment(iline, ok); |
next file_loop when ok; |
|
readword(iline, dname, ok); |
if ok then |
case dname is |
when ".memon" => -- .memon |
read_ea(iline, ival); |
R_MEMON <= ival; |
wait for 2*clock_period; |
|
when ".reset" => -- .reset |
write(oline, string'(".reset")); |
writeline(output, oline); |
RESET <= '1'; |
wait for clock_period; |
RESET <= '0'; |
wait for 9*clock_period; |
|
when ".wait " => -- .wait |
read_ea(iline, idelta); |
wait for idelta*clock_period; |
|
when "read " => -- read |
readgen_ea(iline, iaddr, 16); |
readgen_ea(iline, idata, 16); |
ADDR <= iaddr; |
REQ <= '1'; |
WE <= '0'; |
|
writetimestamp(oline, CLK_CYCLE, ": stim read "); |
writegen(oline, iaddr, right, 6, 16); |
write(oline, string'(" ")); |
writegen(oline, idata, right, 9, 16); |
|
nbusy := 0; |
while BUSY = '1' loop |
nbusy := nbusy + 1; |
wait for clock_period; |
end loop; |
|
write(oline, string'(" nbusy=")); |
write(oline, nbusy, right, 2); |
writeline(output, oline); |
|
N_CHK_DATA <= '1', '0' after clock_period; |
N_REF_DATA <= idata; |
N_REF_ADDR <= iaddr; |
|
wait for clock_period; |
REQ <= '0'; |
|
when "write " => -- write |
readgen_ea(iline, iaddr, 16); |
read_ea(iline, ibe); |
readgen_ea(iline, idata, 16); |
ADDR <= iaddr; |
BE <= ibe; |
DI <= idata; |
REQ <= '1'; |
WE <= '1'; |
|
writetimestamp(oline, CLK_CYCLE, ": stim write"); |
writegen(oline, iaddr, right, 6, 16); |
writegen(oline, ibe , right, 5, 2); |
writegen(oline, idata, right, 9, 16); |
|
nbusy := 0; |
while BUSY = '1' loop |
nbusy := nbusy + 1; |
wait for clock_period; |
end loop; |
|
write(oline, string'(" nbusy=")); |
write(oline, nbusy, right, 2); |
writeline(output, oline); |
|
wait for clock_period; |
REQ <= '0'; |
|
when others => -- bad directive |
write(oline, string'("?? unknown directive: ")); |
write(oline, dname); |
writeline(output, oline); |
report "aborting" severity failure; |
end case; |
else |
report "failed to find command" severity failure; |
|
end if; |
|
testempty_ea(iline); |
|
end loop; -- file fstim |
|
wait for 10*clock_period; |
|
writetimestamp(oline, CLK_CYCLE, ": DONE "); |
writeline(output, oline); |
|
CLK_STOP <= '1'; |
|
wait; -- suspend proc_stim forever |
-- clock is stopped, sim will end |
|
end process proc_stim; |
|
|
proc_moni: process |
variable oline : line; |
begin |
|
loop |
wait until rising_edge(CLK); |
|
if ACK_R = '1' then |
writetimestamp(oline, CLK_CYCLE, ": moni "); |
writegen(oline, DO, right, 9, 16); |
if R_CHK_DATA_DL = '1' then |
write(oline, string'(" CHECK")); |
if R_REF_DATA_DL = DO then |
write(oline, string'(" OK")); |
else |
write(oline, string'(" FAIL, exp=")); |
writegen(oline, R_REF_DATA_DL, right, 9, 16); |
write(oline, string'(" for a=")); |
writegen(oline, R_REF_ADDR_DL, right, 5, 16); |
end if; |
R_CHK_DATA_DL <= '0'; |
end if; |
writeline(output, oline); |
end if; |
|
if R_CHK_DATA_AL = '1' then |
R_CHK_DATA_DL <= R_CHK_DATA_AL; |
R_REF_DATA_DL <= R_REF_DATA_AL; |
R_REF_ADDR_DL <= R_REF_ADDR_AL; |
R_CHK_DATA_AL <= '0'; |
end if; |
if N_CHK_DATA = '1' then |
R_CHK_DATA_AL <= N_CHK_DATA; |
R_REF_DATA_AL <= N_REF_DATA; |
R_REF_ADDR_AL <= N_REF_ADDR; |
end if; |
|
end loop; |
|
end process proc_moni; |
|
|
proc_memon: process |
variable oline : line; |
begin |
|
loop |
wait until rising_edge(CLK); |
|
if R_MEMON = '1' then |
writetimestamp(oline, CLK_CYCLE, ": mem "); |
write(oline, string'(" ce=")); |
write(oline, not O_MEM_CE_N, right, 2); |
write(oline, string'(" be=")); |
write(oline, not O_MEM_BE_N, right, 4); |
write(oline, string'(" we=")); |
write(oline, not O_MEM_WE_N, right); |
write(oline, string'(" oe=")); |
write(oline, not O_MEM_OE_N, right); |
write(oline, string'(" a=")); |
writegen(oline, O_MEM_ADDR, right, 5, 16); |
write(oline, string'(" d=")); |
writegen(oline, IO_MEM_DATA, right, 8, 16); |
writeline(output, oline); |
end if; |
|
end loop; |
|
end process proc_memon; |
|
|
end sim; |
/tb/tb_s3_sram_memctl_stim.dat
0,0 → 1,176
# $Id: tb_s3_sram_memctl_stim.dat 290 2010-05-16 08:44:36Z mueller $ |
# |
.memon 0 |
# |
C write full word 16 cells |
# |
write 00000 1111 30201000 |
write 00001 1111 31211101 |
write 00002 1111 32221202 |
write 00003 1111 33231303 |
write 00004 1111 34241404 |
write 00005 1111 35251505 |
write 00006 1111 36261606 |
write 00007 1111 37271707 |
write 00008 1111 38281808 |
write 00009 1111 39291909 |
write 0000a 1111 3a2a1a0a |
write 0000b 1111 3b2b1b0b |
write 0000c 1111 3c2c1c0c |
write 0000d 1111 3d2d1d0d |
write 0000e 1111 3e2e1e0e |
write 0000f 1111 3f2f1f0f |
# |
C read 16 cells |
# |
read 00000 30201000 |
read 00001 31211101 |
read 00002 32221202 |
read 00003 33231303 |
read 00004 34241404 |
read 00005 35251505 |
read 00006 36261606 |
read 00007 37271707 |
read 00008 38281808 |
read 00009 39291909 |
read 0000a 3a2a1a0a |
read 0000b 3b2b1b0b |
read 0000c 3c2c1c0c |
read 0000d 3d2d1d0d |
read 0000e 3e2e1e0e |
read 0000f 3f2f1f0f |
# |
C write selected bytes in first 16 cells |
# |
write 00000 0000 70605040 |
write 00001 0001 71615141 |
write 00002 0010 72625242 |
write 00003 0011 73635343 |
write 00004 0100 74645444 |
write 00005 0101 75655545 |
write 00006 0110 76665646 |
write 00007 0111 77675747 |
write 00008 1000 78685848 |
write 00009 1001 79695949 |
write 0000a 1010 7a6a5a4a |
write 0000b 1011 7b6b5b4b |
write 0000c 1100 7c6c5c4c |
write 0000d 1101 7d6d5d4d |
write 0000e 1110 7e6e5e4e |
write 0000f 1111 7f6f5f4f |
# |
C read back |
# |
read 00000 30201000 |
read 00001 31211141 |
read 00002 32225202 |
read 00003 33235343 |
read 00004 34641404 |
read 00005 35651545 |
read 00006 36665606 |
read 00007 37675747 |
read 00008 78281808 |
read 00009 79291949 |
read 0000a 7a2a5a0a |
read 0000b 7b2b5b4b |
read 0000c 7c6c1c0c |
read 0000d 7d6d1d4d |
read 0000e 7e6e5e0e |
read 0000f 7f6f5f4f |
# |
C read and write with waits |
# |
.wait 3 |
write 00010 1111 30201000 |
.wait 2 |
write 00011 1111 31211101 |
.wait 1 |
write 00012 1111 32221202 |
write 00013 1111 33231303 |
# |
.wait 3 |
read 00010 30201000 |
.wait 2 |
read 00011 31211101 |
.wait 1 |
read 0000e 7e6e5e0e |
read 0000f 7f6f5f4f |
# |
C read and write mixed, with waits |
# |
.wait 2 |
write 00014 1111 34241404 |
.wait 2 |
read 00012 32221202 |
.wait 2 |
write 00015 1111 35251505 |
.wait 2 |
read 00013 33231303 |
# |
.wait 1 |
write 00016 1111 36261606 |
.wait 1 |
read 00014 34241404 |
.wait 1 |
write 00017 1111 37271707 |
.wait 1 |
read 00015 35251505 |
# |
write 00018 1111 38281808 |
read 00016 36261606 |
write 00019 1111 39291909 |
read 00017 37271707 |
# |
.wait 2 |
write 0001a 1111 3a2a1a0a |
write 0001b 1111 3b2b1b0b |
.wait 2 |
read 00018 38281808 |
read 00019 39291909 |
.wait 2 |
write 0001c 1111 3c2c1c0c |
write 0001d 1111 3d2d1d0d |
.wait 2 |
read 0001a 3a2a1a0a |
read 0001b 3b2b1b0b |
# |
.wait 1 |
write 0001e 1111 3e2e1e0e |
write 0001f 1111 3f2f1f0f |
.wait 1 |
read 0001c 3c2c1c0c |
read 0001d 3d2d1d0d |
.wait 1 |
write 00014 0100 74645444 |
write 00015 0101 75655545 |
.wait 1 |
read 0001e 3e2e1e0e |
read 0001f 3f2f1f0f |
# |
write 00016 0110 76665646 |
write 00017 0111 77675747 |
read 00010 30201000 |
read 00011 31211101 |
write 00018 1000 78685848 |
write 00019 1001 79695949 |
read 00012 32221202 |
read 00013 33231303 |
# |
write 0001a 1010 7a6a5a4a |
write 0001b 1011 7b6b5b4b |
write 0001c 1100 7c6c5c4c |
read 00014 34641404 |
read 00015 35651545 |
read 00016 36665606 |
write 0001d 1101 7d6d5d4d |
write 0001e 1110 7e6e5e4e |
write 0001f 1111 7f6f5f4f |
read 00017 37675747 |
read 00018 78281808 |
read 00019 79291949 |
read 0001a 7a2a5a0a |
read 0001b 7b2b5b4b |
read 0001c 7c6c1c0c |
read 0001d 7d6d1d4d |
read 0001e 7e6e5e0e |
read 0001f 7f6f5f4f |
/tb/s3board_fusp_dummy.vhd
0,0 → 1,78
-- $Id: s3board_fusp_dummy.vhd 336 2010-11-06 18:28:27Z mueller $ |
-- |
-- Copyright 2010- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
-- This program is free software; you may redistribute and/or modify it under |
-- the terms of the GNU General Public License as published by the Free |
-- Software Foundation, either version 2, or at your option any later version. |
-- |
-- This program is distributed in the hope that it will be useful, but |
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY |
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
-- for complete details. |
-- |
------------------------------------------------------------------------------ |
-- Module Name: s3board_fusp_dummy - syn |
-- Description: s3board minimal target (base+fusp; serport loopback) |
-- |
-- Dependencies: - |
-- To test: tb_s3board_fusp |
-- Target Devices: generic |
-- Tool versions: xst 11.4; ghdl 0.26 |
-- Revision History: |
-- Date Rev Version Comment |
-- 2010-11-06 336 1.0.3 rename input pin CLK -> I_CLK50 |
-- 2010-05-21 292 1.0.2 rename _PM1_ -> _FUSP_ |
-- 2010-05-16 291 1.0.1 rename s3board_usp_dummy->s3board_fusp_dummy |
-- 2010-05-01 286 1.0 Initial version (derived from s3board_dummy) |
------------------------------------------------------------------------------ |
|
library ieee; |
use ieee.std_logic_1164.all; |
|
use work.slvtypes.all; |
use work.s3boardlib.all; |
|
entity s3board_fusp_dummy is -- S3BOARD dummy (base+fusp; loopback) |
-- implements s3board_fusp_aif |
port ( |
I_CLK50 : in slbit; -- 50 MHz board clock |
I_RXD : in slbit; -- receive data (board view) |
O_TXD : out slbit; -- transmit data (board view) |
I_SWI : in slv8; -- s3 switches |
I_BTN : in slv4; -- s3 buttons |
O_LED : out slv8; -- s3 leds |
O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low) |
O_SEG_N : out slv8; -- 7 segment disp: segments (act.low) |
O_MEM_CE_N : out slv2; -- sram: chip enables (act.low) |
O_MEM_BE_N : out slv4; -- sram: byte enables (act.low) |
O_MEM_WE_N : out slbit; -- sram: write enable (act.low) |
O_MEM_OE_N : out slbit; -- sram: output enable (act.low) |
O_MEM_ADDR : out slv18; -- sram: address lines |
IO_MEM_DATA : inout slv32; -- sram: data lines |
O_FUSP_RTS_N : out slbit; -- fusp: rs232 rts_n |
I_FUSP_CTS_N : in slbit; -- fusp: rs232 cts_n |
I_FUSP_RXD : in slbit; -- fusp: rs232 rx |
O_FUSP_TXD : out slbit -- fusp: rs232 tx |
); |
end s3board_fusp_dummy; |
|
architecture syn of s3board_fusp_dummy is |
|
begin |
|
O_TXD <= I_RXD; |
O_FUSP_TXD <= I_FUSP_RXD; |
O_FUSP_RTS_N <= I_FUSP_CTS_N; |
|
SRAM : s3_sram_dummy -- connect SRAM to protection dummy |
port map ( |
O_MEM_CE_N => O_MEM_CE_N, |
O_MEM_BE_N => O_MEM_BE_N, |
O_MEM_WE_N => O_MEM_WE_N, |
O_MEM_OE_N => O_MEM_OE_N, |
O_MEM_ADDR => O_MEM_ADDR, |
IO_MEM_DATA => IO_MEM_DATA |
); |
|
end syn; |
/tb/s3board_fusp_dummy.vbom
0,0 → 1,7
# libs |
../../../vlib/slvtypes.vhd |
../s3boardlib.vbom |
# components |
../s3_sram_dummy.vbom |
# design |
s3board_fusp_dummy.vhd |
/tb/tb_s3_sram_memctl_ssim.vbom
0,0 → 1,4
# configure for _*sim case |
uut = s3_sram_memctl_ssim.vhd |
tb_s3_sram_memctl.vbom |
@top:tb_s3_sram_memctl |
/tb/tbw.dat
0,0 → 1,6
# $Id: tbw.dat 353 2011-01-02 21:02:48Z mueller $ |
# |
[tb_s3board_dummy] |
rlink_cext_fifo_rx = <fifo> |
rlink_cext_fifo_tx = <fifo> |
rlink_cext_conf = <null> |
/tb/.cvsignore
0,0 → 1,13
tb_s3board_dummy |
tb_s3board_dummy_[sft]sim |
tb_s3board_dummy_ISim |
tb_s3board_dummy_ISim_[sft]sim |
tb_s3board_fusp_dummy |
rlink_cext_fifo_rx |
rlink_cext_fifo_tx |
rlink_cext_conf |
tb_s3_sram_memctl |
tb_s3_sram_memctl_[sft]sim |
tb_s3_sram_memctl_stim |
tb_s3_sram_memctl_ISim |
tb_s3_sram_memctl_ISim_[sft]sim |
tb
Property changes :
Added: svn:ignore
## -0,0 +1,46 ##
+*.dep_ghdl
+*.dep_isim
+*.dep_xst
+work-obj93.cf
+*.vcd
+*.ghw
+*.sav
+*.tmp
+*.exe
+ise
+xflow.his
+*.ngc
+*.ncd
+*.pcf
+*.bit
+*.msk
+isim
+isim.log
+isim.wdb
+fuse.log
+*_[sft]sim.vhd
+*_tsim.sdf
+*_xst.log
+*_tra.log
+*_twr.log
+*_map.log
+*_par.log
+*_tsi.log
+*_pad.log
+*_bgn.log
+*_svn.log
+*_sum.log
+*_[dsft]sim.log
+tb_s3board_dummy
+tb_s3board_dummy_[sft]sim
+tb_s3board_dummy_ISim
+tb_s3board_dummy_ISim_[sft]sim
+tb_s3board_fusp_dummy
+rlink_cext_fifo_rx
+rlink_cext_fifo_tx
+rlink_cext_conf
+tb_s3_sram_memctl
+tb_s3_sram_memctl_[sft]sim
+tb_s3_sram_memctl_stim
+tb_s3_sram_memctl_ISim
+tb_s3_sram_memctl_ISim_[sft]sim
Index: Makefile
===================================================================
--- Makefile (nonexistent)
+++ Makefile (revision 26)
@@ -0,0 +1,31 @@
+# $Id: Makefile 575 2014-07-27 20:55:41Z mueller $
+#
+# Revision History:
+# Date Rev Version Comment
+# 2014-07-27 545 1.1.1 make reference board configurable via XTW_BOARD
+# 2011-08-13 405 1.1 use includes from rtl/make
+# 2007-12-09 100 1.0.1 drop ISE_p definition
+# 2007-09-16 83 1.0 Initial version
+#
+VBOM_all = $(wildcard *.vbom)
+NGC_all = $(VBOM_all:.vbom=.ngc)
+#
+ifndef XTW_BOARD
+ XTW_BOARD=s3board
+endif
+include $(RETROBASE)/rtl/make/xflow_default_$(XTW_BOARD).mk
+#
+.PHONY : all clean
+#
+all : $(NGC_all)
+#
+clean : ise_clean
+#
+#----
+#
+include $(RETROBASE)/rtl/make/generic_xflow.mk
+#
+ifndef DONTINCDEP
+include $(VBOM_all:.vbom=.dep_xst)
+endif
+#
Index: s3_sram_dummy.vhd
===================================================================
--- s3_sram_dummy.vhd (nonexistent)
+++ s3_sram_dummy.vhd (revision 26)
@@ -0,0 +1,56 @@
+-- $Id: s3_sram_dummy.vhd 426 2011-11-18 18:14:08Z mueller $
+--
+-- Copyright 2007-2010 by Walter F.J. Mueller
+--
+-- This program is free software; you may redistribute and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation, either version 2, or at your option any later version.
+--
+-- This program is distributed in the hope that it will be useful, but
+-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
+-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for complete details.
+--
+------------------------------------------------------------------------------
+-- Module Name: s3_sram_dummy - syn
+-- Description: s3board: SRAM protection dummy
+--
+-- Dependencies: -
+-- Test bench: -
+-- Target Devices: generic
+-- Tool versions: xst 8.1, 8.2, 9.1, 9.2, 11.4; ghdl 0.18-0.26
+-- Revision History:
+-- Date Rev Version Comment
+-- 2010-04-17 278 1.0.2 renamed from sram_dummy
+-- 2007-12-09 101 1.0.1 use _N for active low
+-- 2007-12-08 100 1.0 Initial version
+------------------------------------------------------------------------------
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+use work.slvtypes.all;
+
+entity s3_sram_dummy is -- SRAM protection dummy
+ port (
+ O_MEM_CE_N : out slv2; -- sram: chip enables (act.low)
+ O_MEM_BE_N : out slv4; -- sram: byte enables (act.low)
+ O_MEM_WE_N : out slbit; -- sram: write enable (act.low)
+ O_MEM_OE_N : out slbit; -- sram: output enable (act.low)
+ O_MEM_ADDR : out slv18; -- sram: address lines
+ IO_MEM_DATA : inout slv32 -- sram: data lines
+ );
+end s3_sram_dummy;
+
+
+architecture syn of s3_sram_dummy is
+begin
+
+ O_MEM_CE_N <= "11"; -- disable sram chips
+ O_MEM_BE_N <= "1111";
+ O_MEM_WE_N <= '1';
+ O_MEM_OE_N <= '1';
+ O_MEM_ADDR <= (others=>'0');
+ IO_MEM_DATA <= (others=>'0');
+
+end syn;
Index: s3boardlib.vhd
===================================================================
--- s3boardlib.vhd (nonexistent)
+++ s3boardlib.vhd (revision 26)
@@ -0,0 +1,126 @@
+-- $Id: s3boardlib.vhd 426 2011-11-18 18:14:08Z mueller $
+--
+-- Copyright 2007-2011 by Walter F.J. Mueller
+--
+-- This program is free software; you may redistribute and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation, either version 2, or at your option any later version.
+--
+-- This program is distributed in the hope that it will be useful, but
+-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
+-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for complete details.
+--
+------------------------------------------------------------------------------
+-- Package Name: s3boardlib
+-- Description: S3BOARD components
+--
+-- Dependencies: -
+-- Tool versions: xst 8.1, 8.2, 9.1, 9.2, 11.4, 12.1; ghdl 0.18-0.29
+-- Revision History:
+-- Date Rev Version Comment
+-- 2011-07-09 391 1.3.5 move s3_rs232_iob_int_ext to bpgenlib
+-- 2011-07-08 390 1.3.4 move s3_(dispdrv|humanio*) to bpgenlib
+-- 2011-07-03 387 1.3.3 move s3_rs232_iob_(int|ext) to bpgenlib
+-- 2010-12-30 351 1.3.2 use rblib; rename human s3_humanio_rri -> _rbus
+-- 2010-11-06 336 1.3.1 rename input pin CLK -> I_CLK50
+-- 2010-06-03 300 1.3 add s3_humanio_rri (now needs rrilib)
+-- 2010-05-21 292 1.2.2 rename _PM1_ -> _FUSP_
+-- 2010-05-16 291 1.2.1 rename memctl_s3sram -> s3_sram_memctl; _usp->_fusp
+-- 2010-05-01 286 1.2 added s3board_usp_aif (base+pm1_rs232)
+-- 2010-04-17 278 1.1.6 rename, prefix dispdrv,sram_summy with s3_;
+-- add s3_rs232_iob_(int|ext|int_ext)
+-- 2010-04-11 276 1.1.5 add DEBOUNCE for s3_humanio
+-- 2010-04-10 275 1.1.4 add s3_humanio
+-- 2008-02-17 117 1.1.3 memctl_s3sram: use req,we interface
+-- 2008-01-20 113 1.1.2 rename memdrv -> memctl_s3sram
+-- 2007-12-16 101 1.1.1 use _N for active low
+-- 2007-12-09 100 1.1 add sram memory signals; sram_dummy; memdrv
+-- 2007-09-23 84 1.0 Initial version
+------------------------------------------------------------------------------
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+use work.slvtypes.all;
+
+package s3boardlib is
+
+component s3board_aif is -- S3BOARD, abstract iface, base
+ port (
+ I_CLK50 : in slbit; -- 50 MHz board clock
+ I_RXD : in slbit; -- receive data (board view)
+ O_TXD : out slbit; -- transmit data (board view)
+ I_SWI : in slv8; -- s3 switches
+ I_BTN : in slv4; -- s3 buttons
+ O_LED : out slv8; -- s3 leds
+ O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low)
+ O_SEG_N : out slv8; -- 7 segment disp: segments (act.low)
+ O_MEM_CE_N : out slv2; -- sram: chip enables (act.low)
+ O_MEM_BE_N : out slv4; -- sram: byte enables (act.low)
+ O_MEM_WE_N : out slbit; -- sram: write enable (act.low)
+ O_MEM_OE_N : out slbit; -- sram: output enable (act.low)
+ O_MEM_ADDR : out slv18; -- sram: address lines
+ IO_MEM_DATA : inout slv32 -- sram: data lines
+ );
+end component;
+
+component s3board_fusp_aif is -- S3BOARD, abstract iface, base+fusp
+ port (
+ I_CLK50 : in slbit; -- 50 MHz board clock
+ I_RXD : in slbit; -- receive data (board view)
+ O_TXD : out slbit; -- transmit data (board view)
+ I_SWI : in slv8; -- s3 switches
+ I_BTN : in slv4; -- s3 buttons
+ O_LED : out slv8; -- s3 leds
+ O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low)
+ O_SEG_N : out slv8; -- 7 segment disp: segments (act.low)
+ O_MEM_CE_N : out slv2; -- sram: chip enables (act.low)
+ O_MEM_BE_N : out slv4; -- sram: byte enables (act.low)
+ O_MEM_WE_N : out slbit; -- sram: write enable (act.low)
+ O_MEM_OE_N : out slbit; -- sram: output enable (act.low)
+ O_MEM_ADDR : out slv18; -- sram: address lines
+ IO_MEM_DATA : inout slv32; -- sram: data lines
+ O_FUSP_RTS_N : out slbit; -- fusp: rs232 rts_n
+ I_FUSP_CTS_N : in slbit; -- fusp: rs232 cts_n
+ I_FUSP_RXD : in slbit; -- fusp: rs232 rx
+ O_FUSP_TXD : out slbit -- fusp: rs232 tx
+ );
+end component;
+
+component s3_sram_dummy is -- SRAM protection dummy
+ port (
+ O_MEM_CE_N : out slv2; -- sram: chip enables (act.low)
+ O_MEM_BE_N : out slv4; -- sram: byte enables (act.low)
+ O_MEM_WE_N : out slbit; -- sram: write enable (act.low)
+ O_MEM_OE_N : out slbit; -- sram: output enable (act.low)
+ O_MEM_ADDR : out slv18; -- sram: address lines
+ IO_MEM_DATA : inout slv32 -- sram: data lines
+ );
+end component;
+
+component s3_sram_memctl is -- SRAM driver
+ port (
+ CLK : in slbit; -- clock
+ RESET : in slbit; -- reset
+ REQ : in slbit; -- request
+ WE : in slbit; -- write enable
+ BUSY : out slbit; -- controller busy
+ ACK_R : out slbit; -- acknowledge read
+ ACK_W : out slbit; -- acknowledge write
+ ACT_R : out slbit; -- signal active read
+ ACT_W : out slbit; -- signal active write
+ ADDR : in slv18; -- address
+ BE : in slv4; -- byte enable
+ DI : in slv32; -- data in (memory view)
+ DO : out slv32; -- data out (memory view)
+ O_MEM_CE_N : out slv2; -- sram: chip enables (act.low)
+ O_MEM_BE_N : out slv4; -- sram: byte enables (act.low)
+ O_MEM_WE_N : out slbit; -- sram: write enable (act.low)
+ O_MEM_OE_N : out slbit; -- sram: output enable (act.low)
+ O_MEM_ADDR : out slv18; -- sram: address lines
+ IO_MEM_DATA : inout slv32 -- sram: data lines
+ );
+end component;
+
+end package s3boardlib;
Index: s3_sram_memctl.vhd
===================================================================
--- s3_sram_memctl.vhd (nonexistent)
+++ s3_sram_memctl.vhd (revision 26)
@@ -0,0 +1,366 @@
+-- $Id: s3_sram_memctl.vhd 427 2011-11-19 21:04:11Z mueller $
+--
+-- Copyright 2007-2011 by Walter F.J. Mueller
+--
+-- This program is free software; you may redistribute and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation, either version 2, or at your option any later version.
+--
+-- This program is distributed in the hope that it will be useful, but
+-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
+-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for complete details.
+--
+------------------------------------------------------------------------------
+-- Module Name: s3_sram_memctl - syn
+-- Description: s3board: SRAM driver
+--
+-- Dependencies: vlib/xlib/iob_reg_o
+-- vlib/xlib/iob_reg_o_gen
+-- vlib/xlib/iob_reg_io_gen
+-- Test bench: tb/tb_s3_sram_memctl
+-- fw_gen/tst_sram/s3board/tb/tb_tst_sram_s3
+-- Target Devices: generic
+-- Tool versions: xst 8.2, 9.1, 9.2, 13.1; ghdl 0.18-0.29
+--
+-- Synthesized (xst):
+-- Date Rev ise Target flop lutl lutm slic t peri
+-- 2010-05-23 293 11.4 L68 xc3s1000-4 7 22 0 14 s 8.5
+-- 2008-02-16 116 8.2.03 I34 xc3s1000-4 5 30 0 17 s 7.0
+--
+-- Revision History:
+-- Date Rev Version Comment
+-- 2011-11-19 427 1.0.6 now numeric_std clean
+-- 2010-06-03 299 1.0.5 add "KEEP" for data iob;
+-- 2010-05-16 291 1.0.4 rename memctl_s3sram -> s3_sram_memctl
+-- 2008-02-17 117 1.0.3 use req,we rather req_r,req_w interface
+-- 2008-01-20 113 1.0.2 rename memdrv -> memctl_s3sram
+-- 2007-12-15 101 1.0.1 use _N for active low; get ce/we clocking right
+-- 2007-12-08 100 1.0 Initial version
+--
+-- Timing of some signals:
+--
+-- single read request:
+--
+-- state |_idle |_read |_idle |
+--
+-- CLK __|^^^|___|^^^|___|^^^|___|^
+--
+-- REQ _______|^^^^^|______________
+-- WE ____________________________
+--
+-- IOB_CE __________|^^^^^^^|_________
+-- IOB_OE __________|^^^^^^^|_________
+--
+-- DO oooooooooooooooooo|ddddddd|d
+-- BUSY ____________________________
+-- ACK_R __________________|^^^^^^^|_
+--
+-- single write request:
+--
+-- state |_idle |_write1|_write2|_idle |
+--
+-- CLK __|^^^|___|^^^|___|^^^|___|^^^|___|^
+--
+-- REQ _______|^^^^^|______________
+-- WE _______|^^^^^|______________
+--
+-- IOB_CE __________|^^^^^^^^^^^^^^^|_________
+-- IOB_BE __________|^^^^^^^^^^^^^^^|_________
+-- IOB_OE ____________________________________
+-- IOB_WE ______________|^^^^^^^|_____________
+--
+-- BUSY __________|^^^^^^^|_________________
+-- ACK_W __________________|^^^^^^^|_________
+--
+------------------------------------------------------------------------------
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+use work.slvtypes.all;
+use work.xlib.all;
+
+entity s3_sram_memctl is -- SRAM driver for S3BOARD
+ port (
+ CLK : in slbit; -- clock
+ RESET : in slbit; -- reset
+ REQ : in slbit; -- request
+ WE : in slbit; -- write enable
+ BUSY : out slbit; -- controller busy
+ ACK_R : out slbit; -- acknowledge read
+ ACK_W : out slbit; -- acknowledge write
+ ACT_R : out slbit; -- signal active read
+ ACT_W : out slbit; -- signal active write
+ ADDR : in slv18; -- address
+ BE : in slv4; -- byte enable
+ DI : in slv32; -- data in (memory view)
+ DO : out slv32; -- data out (memory view)
+ O_MEM_CE_N : out slv2; -- sram: chip enables (act.low)
+ O_MEM_BE_N : out slv4; -- sram: byte enables (act.low)
+ O_MEM_WE_N : out slbit; -- sram: write enable (act.low)
+ O_MEM_OE_N : out slbit; -- sram: output enable (act.low)
+ O_MEM_ADDR : out slv18; -- sram: address lines
+ IO_MEM_DATA : inout slv32 -- sram: data lines
+ );
+end s3_sram_memctl;
+
+
+architecture syn of s3_sram_memctl is
+
+ type state_type is (
+ s_idle, -- s_idle: wait for req
+ s_read, -- s_read: read cycle
+ s_write1, -- s_write1: write cycle, 1st half
+ s_write2, -- s_write2: write cycle, 2nd half
+ s_bta_r2w, -- s_bta_r2w: bus turn around: r->w
+ s_bta_w2r -- s_bta_w2r: bus turn around: w->r
+ );
+
+ type regs_type is record
+ state : state_type; -- state
+ ackr : slbit; -- signal ack_r
+ end record regs_type;
+
+ constant regs_init : regs_type := (
+ s_idle,
+ '0' -- ackr
+ );
+
+ signal R_REGS : regs_type := regs_init; -- state registers
+ signal N_REGS : regs_type := regs_init; -- next value state regs
+
+ signal CLK_180 : slbit := '0';
+ signal MEM_CE_N : slv2 := "00";
+ signal MEM_BE_N : slv4 := "0000";
+ signal MEM_WE_N : slbit := '0';
+ signal MEM_OE_N : slbit := '0';
+ signal ADDR_CE : slbit := '0';
+ signal DATA_CEI : slbit := '0';
+ signal DATA_CEO : slbit := '0';
+ signal DATA_OE : slbit := '0';
+
+begin
+
+ CLK_180 <= not CLK;
+
+ IOB_MEM_CE : iob_reg_o_gen
+ generic map (
+ DWIDTH => 2,
+ INIT => '1')
+ port map (
+ CLK => CLK,
+ CE => '1',
+ DO => MEM_CE_N,
+ PAD => O_MEM_CE_N
+ );
+
+ IOB_MEM_BE : iob_reg_o_gen
+ generic map (
+ DWIDTH => 4,
+ INIT => '1')
+ port map (
+ CLK => CLK,
+ CE => ADDR_CE,
+ DO => MEM_BE_N,
+ PAD => O_MEM_BE_N
+ );
+
+ IOB_MEM_WE : iob_reg_o
+ generic map (
+ INIT => '1')
+ port map (
+ CLK => CLK_180,
+ CE => '1',
+ DO => MEM_WE_N,
+ PAD => O_MEM_WE_N
+ );
+
+ IOB_MEM_OE : iob_reg_o
+ generic map (
+ INIT => '1')
+ port map (
+ CLK => CLK,
+ CE => '1',
+ DO => MEM_OE_N,
+ PAD => O_MEM_OE_N
+ );
+
+ IOB_MEM_ADDR : iob_reg_o_gen
+ generic map (
+ DWIDTH => 18)
+ port map (
+ CLK => CLK,
+ CE => ADDR_CE,
+ DO => ADDR,
+ PAD => O_MEM_ADDR
+ );
+
+ IOB_MEM_DATA : iob_reg_io_gen
+ generic map (
+ DWIDTH => 32,
+ PULL => "KEEP")
+ port map (
+ CLK => CLK,
+ CEI => DATA_CEI,
+ CEO => DATA_CEO,
+ OE => DATA_OE,
+ DI => DO,
+ DO => DI,
+ PAD => IO_MEM_DATA
+ );
+
+ proc_regs: process (CLK)
+ begin
+
+ if rising_edge(CLK) then
+ if RESET = '1' then
+ R_REGS <= regs_init;
+ else
+ R_REGS <= N_REGS;
+ end if;
+ end if;
+
+ end process proc_regs;
+
+ proc_next: process (R_REGS, REQ, WE, BE)
+
+ variable r : regs_type := regs_init;
+ variable n : regs_type := regs_init;
+ variable ibusy : slbit := '0';
+ variable iackw : slbit := '0';
+ variable iactr : slbit := '0';
+ variable iactw : slbit := '0';
+ variable imem_ce : slv2 := "00";
+ variable imem_be : slv4 := "0000";
+ variable imem_we : slbit := '0';
+ variable imem_oe : slbit := '0';
+ variable iaddr_ce : slbit := '0';
+ variable idata_cei : slbit := '0';
+ variable idata_ceo : slbit := '0';
+ variable idata_oe : slbit := '0';
+
+ begin
+
+ r := R_REGS;
+ n := R_REGS;
+ n.ackr := '0';
+
+ ibusy := '0';
+ iackw := '0';
+ iactr := '0';
+ iactw := '0';
+
+ imem_ce := "00";
+ imem_be := "1111";
+ imem_we := '0';
+ imem_oe := '0';
+ iaddr_ce := '0';
+ idata_cei := '0';
+ idata_ceo := '0';
+ idata_oe := '0';
+
+ case r.state is
+ when s_idle => -- s_idle: wait for req
+ if REQ = '1' then -- if IO requested
+ if WE = '0' then -- if READ requested
+ iaddr_ce := '1'; -- latch address and be's
+ imem_ce := "11"; -- ce SRAM next cycle
+ imem_oe := '1'; -- oe SRAM next cycle
+ n.state := s_read; -- next: read
+ else -- if WRITE requested
+ iaddr_ce := '1'; -- latch address and be's
+ idata_ceo := '1'; -- latch output data
+ idata_oe := '1'; -- oe FPGA next cycle
+ imem_ce := "11"; -- ce SRAM next cycle
+ imem_be := BE; -- use request BE's
+ n.state := s_write1; -- next: write 1st part
+ end if;
+ end if;
+
+ when s_read => -- s_read: read cycle
+ idata_cei := '1'; -- latch input data
+ iactr := '1'; -- signal mem read
+ n.ackr := '1'; -- ACK_R next cycle
+ if REQ = '1' then -- if IO requested
+ if WE = '0' then -- if READ requested
+ iaddr_ce := '1'; -- latch address and be's
+ imem_ce := "11"; -- ce SRAM next cycle
+ imem_oe := '1'; -- oe SRAM next cycle
+ n.state := s_read; -- next: continue read
+ else -- if WRITE requested
+ iaddr_ce := '1'; -- latch address and be's
+ idata_ceo := '1'; -- latch output data
+ imem_be := BE; -- use request BE's
+ n.state := s_bta_r2w; -- next: bus turn around cycle
+ end if;
+ else
+ n.state := s_idle; -- next: idle if nothing to do
+ end if;
+
+ when s_write1 => -- s_write1: write cycle, 1st half
+ ibusy := '1'; -- signal busy, unable to handle req
+ iactw := '1'; -- signal mem write
+ idata_oe := '1'; -- oe FPGA next cycle
+ imem_ce := "11"; -- ce SRAM next cycle
+ imem_we := '1'; -- we SRAM next shifted cycle
+ n.state := s_write2; -- next: write cycle, 2nd half
+
+ when s_write2 => -- s_write2: write cycle, 2nd half
+ iactw := '1'; -- signal mem write
+ iackw := '1'; -- signal write acknowledge
+ idata_cei := '1'; -- latch input data (from SRAM)
+ if REQ = '1' then -- if IO requested
+ if WE = '1' then -- if WRITE requested
+ iaddr_ce := '1'; -- latch address and be's
+ idata_ceo := '1'; -- latch output data
+ idata_oe := '1'; -- oe FPGA next cycle
+ imem_ce := "11"; -- ce SRAM next cycle
+ imem_be := BE; -- use request BE's
+ n.state := s_write1; -- next: continue read
+ else -- if READ requested
+ iaddr_ce := '1'; -- latch address and be's
+ n.state := s_bta_w2r; -- next: bus turn around cycle
+ end if;
+ else
+ n.state := s_idle; -- next: idle if nothing to do
+ end if;
+
+ when s_bta_r2w => -- s_bta_r2w: bus turn around: r->w
+ ibusy := '1'; -- signal busy, unable to handle req
+ iactw := '1'; -- signal mem write
+ imem_ce := "11"; -- ce SRAM next cycle
+ idata_oe := '1'; -- oe FPGA next cycle
+ n.state := s_write1; -- next: start write
+
+ when s_bta_w2r => -- s_bta_w2r: bus turn around: w->r
+ ibusy := '1'; -- signal busy, unable to handle req
+ iactr := '1'; -- signal mem read
+ imem_ce := "11"; -- ce SRAM next cycle
+ imem_oe := '1'; -- oe SRAM next cycle
+ n.state := s_read; -- next: start read
+
+ when others => null;
+ end case;
+
+ N_REGS <= n;
+
+ MEM_CE_N <= not imem_ce;
+ MEM_WE_N <= not imem_we;
+ MEM_BE_N <= not imem_be;
+ MEM_OE_N <= not imem_oe;
+ ADDR_CE <= iaddr_ce;
+ DATA_CEI <= idata_cei;
+ DATA_CEO <= idata_ceo;
+ DATA_OE <= idata_oe;
+
+ BUSY <= ibusy;
+ ACK_R <= r.ackr;
+ ACK_W <= iackw;
+ ACT_R <= iactr;
+ ACT_W <= iactw;
+
+ end process proc_next;
+
+end syn;
Index: s3board_pins.ucf
===================================================================
--- s3board_pins.ucf (nonexistent)
+++ s3board_pins.ucf (revision 26)
@@ -0,0 +1,133 @@
+## $Id: s3board_pins.ucf 402 2011-08-05 18:56:44Z mueller $
+##
+## Pin locks for S3BOARD core functionality:
+## - internal RS232
+## - human I/O (switches, buttons, leds, display)
+## - sram
+##
+## Revision History:
+## Date Rev Version Comment
+## 2010-11-06 336 1.1.1 Rename CLK -> I_CLK50
+## 2008-05-25 150 1.1 Use DRIVE=6|SLEW=SLOW|KEEPER for memory data lines
+## 2008-02-17 101 1.0 Initial version
+##
+## Note: default is DRIVE=12 | SLEW=SLOW
+##
+## clocks --------------------------------------------------------------------
+NET "I_CLK50" LOC = "t9" | IOSTANDARD=LVCMOS33;
+##
+## RS232 interface -----------------------------------------------------------
+NET "I_RXD" LOC = "t13" | IOSTANDARD=LVCMOS33;
+NET "O_TXD" LOC = "r13" | IOSTANDARD=LVCMOS33 | DRIVE=12 | SLEW=SLOW;
+##
+## switches and buttons ------------------------------------------------------
+NET "I_SWI<0>" LOC = "f12" | IOSTANDARD=LVCMOS33;
+NET "I_SWI<1>" LOC = "g12" | IOSTANDARD=LVCMOS33;
+NET "I_SWI<2>" LOC = "h14" | IOSTANDARD=LVCMOS33;
+NET "I_SWI<3>" LOC = "h13" | IOSTANDARD=LVCMOS33;
+NET "I_SWI<4>" LOC = "j14" | IOSTANDARD=LVCMOS33;
+NET "I_SWI<5>" LOC = "j13" | IOSTANDARD=LVCMOS33;
+NET "I_SWI<6>" LOC = "k14" | IOSTANDARD=LVCMOS33;
+NET "I_SWI<7>" LOC = "k13" | IOSTANDARD=LVCMOS33;
+##
+NET "I_BTN<0>" LOC = "m13" | IOSTANDARD=LVCMOS33;
+NET "I_BTN<1>" LOC = "m14" | IOSTANDARD=LVCMOS33;
+NET "I_BTN<2>" LOC = "l13" | IOSTANDARD=LVCMOS33;
+NET "I_BTN<3>" LOC = "l14" | IOSTANDARD=LVCMOS33;
+##
+## LEDs ----------------------------------------------------------------------
+NET "O_LED<0>" LOC = "k12" | IOSTANDARD=LVCMOS33;
+NET "O_LED<1>" LOC = "p14" | IOSTANDARD=LVCMOS33;
+NET "O_LED<2>" LOC = "l12" | IOSTANDARD=LVCMOS33;
+NET "O_LED<3>" LOC = "n14" | IOSTANDARD=LVCMOS33;
+NET "O_LED<4>" LOC = "p13" | IOSTANDARD=LVCMOS33;
+NET "O_LED<5>" LOC = "n12" | IOSTANDARD=LVCMOS33;
+NET "O_LED<6>" LOC = "p12" | IOSTANDARD=LVCMOS33;
+NET "O_LED<7>" LOC = "p11" | IOSTANDARD=LVCMOS33;
+NET "O_LED<*>" DRIVE=12 | SLEW=SLOW;
+##
+## 7 segment display ---------------------------------------------------------
+NET "O_ANO_N<0>" LOC = "d14" | IOSTANDARD=LVCMOS33;
+NET "O_ANO_N<1>" LOC = "g14" | IOSTANDARD=LVCMOS33;
+NET "O_ANO_N<2>" LOC = "f14" | IOSTANDARD=LVCMOS33;
+NET "O_ANO_N<3>" LOC = "e13" | IOSTANDARD=LVCMOS33;
+NET "O_ANO_N<*>" DRIVE=12 | SLEW=SLOW;
+##
+NET "O_SEG_N<0>" LOC = "e14" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<1>" LOC = "g13" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<2>" LOC = "n15" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<3>" LOC = "p15" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<4>" LOC = "r16" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<5>" LOC = "f13" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<6>" LOC = "n16" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<7>" LOC = "p16" | IOSTANDARD=LVCMOS33;
+NET "O_SEG_N<*>" DRIVE=12 | SLEW=SLOW;
+##
+## SRAM ----------------------------------------------------------------------
+NET "O_MEM_CE_N<0>" LOC = "p7" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_CE_N<1>" LOC = "n5" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_CE_N<*>" DRIVE=12 | SLEW=FAST;
+##
+NET "O_MEM_BE_N<0>" LOC = "p6" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_BE_N<1>" LOC = "t4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_BE_N<2>" LOC = "p5" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_BE_N<3>" LOC = "r4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_BE_N<*>" DRIVE=12 | SLEW=FAST;
+##
+NET "O_MEM_WE_N" LOC = "g3" | IOSTANDARD=LVCMOS33 | DRIVE=12 | SLEW=FAST;
+NET "O_MEM_OE_N" LOC = "k4" | IOSTANDARD=LVCMOS33 | DRIVE=12 | SLEW=FAST;
+##
+NET "O_MEM_ADDR<0>" LOC = "l5" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<1>" LOC = "n3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<2>" LOC = "m4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<3>" LOC = "m3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<4>" LOC = "l4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<5>" LOC = "g4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<6>" LOC = "f3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<7>" LOC = "f4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<8>" LOC = "e3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<9>" LOC = "e4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<10>" LOC = "g5" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<11>" LOC = "h3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<12>" LOC = "h4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<13>" LOC = "j4" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<14>" LOC = "j3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<15>" LOC = "k3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<16>" LOC = "k5" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<17>" LOC = "l3" | IOSTANDARD=LVCMOS33;
+NET "O_MEM_ADDR<*>" DRIVE=6 | SLEW=FAST;
+##
+NET "IO_MEM_DATA<0>" LOC = "n7" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<1>" LOC = "t8" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<2>" LOC = "r6" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<3>" LOC = "t5" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<4>" LOC = "r5" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<5>" LOC = "c2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<6>" LOC = "c1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<7>" LOC = "b1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<8>" LOC = "d3" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<9>" LOC = "p8" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<10>" LOC = "f2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<11>" LOC = "h1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<12>" LOC = "j2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<13>" LOC = "l2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<14>" LOC = "p1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<15>" LOC = "r1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<16>" LOC = "p2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<17>" LOC = "n2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<18>" LOC = "m2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<19>" LOC = "k1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<20>" LOC = "j1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<21>" LOC = "g2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<22>" LOC = "e1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<23>" LOC = "d1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<24>" LOC = "d2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<25>" LOC = "e2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<26>" LOC = "g1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<27>" LOC = "f5" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<28>" LOC = "c3" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<29>" LOC = "k2" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<30>" LOC = "m1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<31>" LOC = "n1" | IOSTANDARD=LVCMOS33;
+NET "IO_MEM_DATA<*>" DRIVE=6 | SLEW=SLOW | KEEPER;
+##
Index: s3boardlib.vbom
===================================================================
--- s3boardlib.vbom (nonexistent)
+++ s3boardlib.vbom (revision 26)
@@ -0,0 +1,3 @@
+# libs
+../../vlib/slvtypes.vhd
+s3boardlib.vhd
Index: s3board_a2_pm1_rs232.ucf
===================================================================
--- s3board_a2_pm1_rs232.ucf (nonexistent)
+++ s3board_a2_pm1_rs232.ucf (revision 26)
@@ -0,0 +1,15 @@
+## $Id: s3board_a2_pm1_rs232.ucf 295 2010-05-29 16:58:01Z mueller $
+##
+## Revision History:
+## Date Rev Version Comment
+## 2010-05-22 293 1.1 Rename PM1 -> FUSP
+## 2010-04-24 281 1.0 Initial version
+##
+## expansion connector A2 / slot PMod 1 / usage RS232 for FTDI USB serport ---
+##
+## PmodRS232: pins: 1 RTS; 2 CTS; 3 RXD; 4 TXD; 5 GND; 6 VCC
+##
+NET "O_FUSP_RTS_N" LOC = "c6" | IOSTANDARD=LVCMOS33 | DRIVE=4 | SLEW=SLOW;
+NET "I_FUSP_CTS_N" LOC = "e7" | IOSTANDARD=LVCMOS33 | PULLDOWN;
+NET "I_FUSP_RXD" LOC = "c7" | IOSTANDARD=LVCMOS33 | PULLUP;
+NET "O_FUSP_TXD" LOC = "d7" | IOSTANDARD=LVCMOS33 | DRIVE=4 | SLEW=SLOW;
Index: s3_sram_dummy.vbom
===================================================================
--- s3_sram_dummy.vbom (nonexistent)
+++ s3_sram_dummy.vbom (revision 26)
@@ -0,0 +1,5 @@
+# libs
+../../vlib/slvtypes.vhd
+# components
+# design
+s3_sram_dummy.vhd
Index: s3_sram_memctl.vbom
===================================================================
--- s3_sram_memctl.vbom (nonexistent)
+++ s3_sram_memctl.vbom (revision 26)
@@ -0,0 +1,9 @@
+# libs
+../../vlib/slvtypes.vhd
+../../vlib/xlib/xlib.vhd
+# components
+../../vlib/xlib/iob_reg_o.vbom
+../../vlib/xlib/iob_reg_o_gen.vbom
+../../vlib/xlib/iob_reg_io_gen.vbom
+# design
+s3_sram_memctl.vhd
Index: .
===================================================================
--- . (nonexistent)
+++ . (revision 26)
.
Property changes :
Added: svn:ignore
## -0,0 +1,33 ##
+*.dep_ghdl
+*.dep_isim
+*.dep_xst
+work-obj93.cf
+*.vcd
+*.ghw
+*.sav
+*.tmp
+*.exe
+ise
+xflow.his
+*.ngc
+*.ncd
+*.pcf
+*.bit
+*.msk
+isim
+isim.log
+isim.wdb
+fuse.log
+*_[sft]sim.vhd
+*_tsim.sdf
+*_xst.log
+*_tra.log
+*_twr.log
+*_map.log
+*_par.log
+*_tsi.log
+*_pad.log
+*_bgn.log
+*_svn.log
+*_sum.log
+*_[dsft]sim.log