mirror of
https://github.com/wfjm/w11.git
synced 2026-04-25 03:45:42 +00:00
- interim release w11a_V0.58 (untagged)
- C++ and Tcl based backend server now fully functional, supports with
DL11, RK11, LP11 and PC11 all devices available in w11a designs
- the old perl based backend server (pi_rri) is obsolete and removed
- operating system kits reorganized
This commit is contained in:
4
rtl/sys_gen/tst_fx2loop/nexys3/ic/.cvsignore
Normal file
4
rtl/sys_gen/tst_fx2loop/nexys3/ic/.cvsignore
Normal file
@@ -0,0 +1,4 @@
|
||||
_impactbatch.log
|
||||
sys_tst_fx2loop_ic_n3.ucf
|
||||
*.dep_ucf_cpp
|
||||
*.svf
|
||||
30
rtl/sys_gen/tst_fx2loop/nexys3/ic/Makefile
Normal file
30
rtl/sys_gen/tst_fx2loop/nexys3/ic/Makefile
Normal file
@@ -0,0 +1,30 @@
|
||||
# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2012-04-09 461 1.0 Initial version
|
||||
#
|
||||
#
|
||||
VBOM_all = $(wildcard *.vbom)
|
||||
BIT_all = $(VBOM_all:.vbom=.bit)
|
||||
#
|
||||
include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk
|
||||
FX2_FILE = nexys3_jtag_2fifo_ic.ihx
|
||||
#
|
||||
.PHONY : all clean
|
||||
#
|
||||
all : $(BIT_all)
|
||||
#
|
||||
clean : ise_clean
|
||||
rm -f $(VBOM_all:.vbom=.ucf)
|
||||
#
|
||||
#----
|
||||
#
|
||||
include $(RETROBASE)/rtl/make/generic_xflow.mk
|
||||
include $(RETROBASE)/rtl/make/generic_ghdl.mk
|
||||
#
|
||||
ifndef DONTINCDEP
|
||||
include $(VBOM_all:.vbom=.dep_xst)
|
||||
include $(VBOM_all:.vbom=.dep_ghdl)
|
||||
endif
|
||||
#
|
||||
59
rtl/sys_gen/tst_fx2loop/nexys3/ic/sys_conf.vhd
Normal file
59
rtl/sys_gen/tst_fx2loop/nexys3/ic/sys_conf.vhd
Normal file
@@ -0,0 +1,59 @@
|
||||
-- $Id: sys_conf.vhd 510 2013-04-26 16:14:57Z mueller $
|
||||
--
|
||||
-- Copyright 2012-2013 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.
|
||||
--
|
||||
------------------------------------------------------------------------------
|
||||
-- Package Name: sys_conf
|
||||
-- Description: Definitions for sys_tst_fx2loop_ic_n3 (for synthesis)
|
||||
--
|
||||
-- Dependencies: -
|
||||
-- Tool versions: xst 13.3, 14.5; ghdl 0.29
|
||||
-- Revision History:
|
||||
-- Date Rev Version Comment
|
||||
-- 2012-04-24 510 1.1 use 3/2 clock-> 150 MHz sysclk
|
||||
-- 2012-04-09 461 1.0 Initial version
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
|
||||
use work.slvtypes.all;
|
||||
|
||||
package sys_conf is
|
||||
|
||||
constant sys_conf_clkfx_divide : positive := 2;
|
||||
constant sys_conf_clkfx_multiply : positive := 3;
|
||||
|
||||
constant sys_conf_fx2_type : string := "ic2";
|
||||
|
||||
-- dummy values defs for generic parameters of as controller
|
||||
constant sys_conf_fx2_rdpwldelay : positive := 1;
|
||||
constant sys_conf_fx2_rdpwhdelay : positive := 1;
|
||||
constant sys_conf_fx2_wrpwldelay : positive := 1;
|
||||
constant sys_conf_fx2_wrpwhdelay : positive := 1;
|
||||
constant sys_conf_fx2_flagdelay : positive := 1;
|
||||
|
||||
-- pktend timer setting
|
||||
-- petowidth=10 -> 2^10 30 MHz clocks -> ~33 usec (normal operation)
|
||||
constant sys_conf_fx2_petowidth : positive := 10;
|
||||
|
||||
constant sys_conf_fx2_ccwidth : positive := 5;
|
||||
|
||||
constant sys_conf_hio_debounce : boolean := true; -- instantiate debouncers
|
||||
|
||||
-- derived constants
|
||||
|
||||
constant sys_conf_clksys : integer :=
|
||||
(100000000/sys_conf_clkfx_divide)*sys_conf_clkfx_multiply;
|
||||
constant sys_conf_clksys_mhz : integer := sys_conf_clksys/1000000;
|
||||
|
||||
end package sys_conf;
|
||||
@@ -0,0 +1,20 @@
|
||||
## $Id: sys_tst_fx2loop_ic_n3.ucf_cpp 461 2012-04-09 21:17:54Z mueller $
|
||||
##
|
||||
## Revision History:
|
||||
## Date Rev Version Comment
|
||||
## 2012-04-09 461 1.0 Initial version
|
||||
##
|
||||
|
||||
NET "I_CLK100" TNM_NET = "I_CLK100";
|
||||
TIMESPEC "TS_I_CLK100" = PERIOD "I_CLK100" 10.0 ns HIGH 50 %;
|
||||
OFFSET = IN 10 ns BEFORE "I_CLK100";
|
||||
OFFSET = OUT 20 ns AFTER "I_CLK100";
|
||||
|
||||
## std board
|
||||
##
|
||||
#include "bplib/nexys3/nexys3_pins.ucf"
|
||||
##
|
||||
## FX2 interface
|
||||
##
|
||||
#include "bplib/nexys3/nexys3_pins_fx2.ucf"
|
||||
#include "bplib/nexys3/nexys3_time_fx2_ic.ucf"
|
||||
@@ -0,0 +1,8 @@
|
||||
# conf
|
||||
sys_conf = sys_conf.vhd
|
||||
# libs
|
||||
# components
|
||||
# design
|
||||
../sys_tst_fx2loop_n3.vbom
|
||||
@ucf_cpp: sys_tst_fx2loop_ic_n3.ucf
|
||||
@top: sys_tst_fx2loop_n3
|
||||
4
rtl/sys_gen/tst_fx2loop/nexys3/ic3/.cvsignore
Normal file
4
rtl/sys_gen/tst_fx2loop/nexys3/ic3/.cvsignore
Normal file
@@ -0,0 +1,4 @@
|
||||
_impactbatch.log
|
||||
sys_tst_fx2loop_ic3_n3.ucf
|
||||
*.dep_ucf_cpp
|
||||
*.svf
|
||||
30
rtl/sys_gen/tst_fx2loop/nexys3/ic3/Makefile
Normal file
30
rtl/sys_gen/tst_fx2loop/nexys3/ic3/Makefile
Normal file
@@ -0,0 +1,30 @@
|
||||
# $Id: Makefile 477 2013-01-27 14:07:10Z mueller $
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2012-04-09 461 1.0 Initial version
|
||||
#
|
||||
#
|
||||
VBOM_all = $(wildcard *.vbom)
|
||||
BIT_all = $(VBOM_all:.vbom=.bit)
|
||||
#
|
||||
include $(RETROBASE)/rtl/make/xflow_default_nexys3.mk
|
||||
FX2_FILE = nexys3_jtag_3fifo_ic.ihx
|
||||
#
|
||||
.PHONY : all clean
|
||||
#
|
||||
all : $(BIT_all)
|
||||
#
|
||||
clean : ise_clean
|
||||
rm -f $(VBOM_all:.vbom=.ucf)
|
||||
#
|
||||
#----
|
||||
#
|
||||
include $(RETROBASE)/rtl/make/generic_xflow.mk
|
||||
include $(RETROBASE)/rtl/make/generic_ghdl.mk
|
||||
#
|
||||
ifndef DONTINCDEP
|
||||
include $(VBOM_all:.vbom=.dep_xst)
|
||||
include $(VBOM_all:.vbom=.dep_ghdl)
|
||||
endif
|
||||
#
|
||||
59
rtl/sys_gen/tst_fx2loop/nexys3/ic3/sys_conf.vhd
Normal file
59
rtl/sys_gen/tst_fx2loop/nexys3/ic3/sys_conf.vhd
Normal file
@@ -0,0 +1,59 @@
|
||||
-- $Id: sys_conf.vhd 510 2013-04-26 16:14:57Z mueller $
|
||||
--
|
||||
-- Copyright 2012-2013 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.
|
||||
--
|
||||
------------------------------------------------------------------------------
|
||||
-- Package Name: sys_conf
|
||||
-- Description: Definitions for sys_tst_fx2loop_ic3_n3 (for synthesis)
|
||||
--
|
||||
-- Dependencies: -
|
||||
-- Tool versions: xst 13.3, 14.5; ghdl 0.29
|
||||
-- Revision History:
|
||||
-- Date Rev Version Comment
|
||||
-- 2012-04-25 510 1.1 use 3/2 clock-> 150 MHz sysclk
|
||||
-- 2012-04-09 461 1.0 Initial version
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
|
||||
use work.slvtypes.all;
|
||||
|
||||
package sys_conf is
|
||||
|
||||
constant sys_conf_clkfx_divide : positive := 2;
|
||||
constant sys_conf_clkfx_multiply : positive := 3;
|
||||
|
||||
constant sys_conf_fx2_type : string := "ic3";
|
||||
|
||||
-- dummy values defs for generic parameters of as controller
|
||||
constant sys_conf_fx2_rdpwldelay : positive := 1;
|
||||
constant sys_conf_fx2_rdpwhdelay : positive := 1;
|
||||
constant sys_conf_fx2_wrpwldelay : positive := 1;
|
||||
constant sys_conf_fx2_wrpwhdelay : positive := 1;
|
||||
constant sys_conf_fx2_flagdelay : positive := 1;
|
||||
|
||||
-- pktend timer setting
|
||||
-- petowidth=10 -> 2^10 30 MHz clocks -> ~33 usec (normal operation)
|
||||
constant sys_conf_fx2_petowidth : positive := 10;
|
||||
|
||||
constant sys_conf_fx2_ccwidth : positive := 5;
|
||||
|
||||
constant sys_conf_hio_debounce : boolean := true; -- instantiate debouncers
|
||||
|
||||
-- derived constants
|
||||
|
||||
constant sys_conf_clksys : integer :=
|
||||
(100000000/sys_conf_clkfx_divide)*sys_conf_clkfx_multiply;
|
||||
constant sys_conf_clksys_mhz : integer := sys_conf_clksys/1000000;
|
||||
|
||||
end package sys_conf;
|
||||
@@ -0,0 +1,20 @@
|
||||
## $Id: sys_tst_fx2loop_ic3_n3.ucf_cpp 461 2012-04-09 21:17:54Z mueller $
|
||||
##
|
||||
## Revision History:
|
||||
## Date Rev Version Comment
|
||||
## 2012-04-09 461 1.0 Initial version
|
||||
##
|
||||
|
||||
NET "I_CLK100" TNM_NET = "I_CLK100";
|
||||
TIMESPEC "TS_I_CLK100" = PERIOD "I_CLK100" 10.0 ns HIGH 50 %;
|
||||
OFFSET = IN 10 ns BEFORE "I_CLK100";
|
||||
OFFSET = OUT 20 ns AFTER "I_CLK100";
|
||||
|
||||
## std board
|
||||
##
|
||||
#include "bplib/nexys3/nexys3_pins.ucf"
|
||||
##
|
||||
## FX2 interface
|
||||
##
|
||||
#include "bplib/nexys3/nexys3_pins_fx2.ucf"
|
||||
#include "bplib/nexys3/nexys3_time_fx2_ic.ucf"
|
||||
@@ -0,0 +1,8 @@
|
||||
# conf
|
||||
sys_conf = sys_conf.vhd
|
||||
# libs
|
||||
# components
|
||||
# design
|
||||
../sys_tst_fx2loop_n3.vbom
|
||||
@ucf_cpp: sys_tst_fx2loop_ic3_n3.ucf
|
||||
@top: sys_tst_fx2loop_n3
|
||||
30
rtl/sys_gen/tst_fx2loop/nexys3/sys_tst_fx2loop_n3.vbom
Normal file
30
rtl/sys_gen/tst_fx2loop/nexys3/sys_tst_fx2loop_n3.vbom
Normal file
@@ -0,0 +1,30 @@
|
||||
# this is the vbom for the 'generic' top level entity
|
||||
# to be referenced in the vbom's of the specific systems
|
||||
# ./as/sys_tst_fx2loop_as_n3
|
||||
# ./ic/sys_tst_fx2loop_ic_n3
|
||||
# ./ic3/sys_tst_fx2loop_ic3_n3
|
||||
#
|
||||
# libs
|
||||
../../../vlib/slvtypes.vhd
|
||||
../../../vlib/xlib/xlib.vhd
|
||||
../../../vlib/genlib/genlib.vhd
|
||||
../../../bplib/bpgen/bpgenlib.vbom
|
||||
../tst_fx2looplib.vbom
|
||||
../../../bplib/fx2lib/fx2lib.vhd
|
||||
../../../bplib/nxcramlib/nxcramlib.vhd
|
||||
${sys_conf}
|
||||
# components
|
||||
[xst,isim]../../../vlib/xlib/dcm_sfs_unisim_s3e.vbom
|
||||
[ghdl]../../../vlib/xlib/dcm_sfs_gsim.vbom
|
||||
../../../vlib/genlib/clkdivce.vbom
|
||||
../../../bplib/bpgen/sn_humanio.vbom
|
||||
../tst_fx2loop_hiomap.vbom
|
||||
../tst_fx2loop.vbom
|
||||
../../../bplib/fx2lib/fx2_2fifoctl_as.vbom
|
||||
../../../bplib/fx2lib/fx2_2fifoctl_ic.vbom
|
||||
../../../bplib/fx2lib/fx2_3fifoctl_ic.vbom
|
||||
../../../bplib/nxcramlib/nx_cram_dummy.vbom
|
||||
# design
|
||||
sys_tst_fx2loop_n3.vhd
|
||||
## no @ucf_cpp
|
||||
|
||||
364
rtl/sys_gen/tst_fx2loop/nexys3/sys_tst_fx2loop_n3.vhd
Normal file
364
rtl/sys_gen/tst_fx2loop/nexys3/sys_tst_fx2loop_n3.vhd
Normal file
@@ -0,0 +1,364 @@
|
||||
-- $Id: sys_tst_fx2loop_n3.vhd 514 2013-05-03 16:11:23Z mueller $
|
||||
--
|
||||
-- Copyright 2012-2013 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: sys_tst_fx2loop_n3 - syn
|
||||
-- Description: test of Cypress EZ-USB FX2 controller
|
||||
--
|
||||
-- Dependencies: vlib/xlib/dcm_sfs
|
||||
-- vlib/genlib/clkdivce
|
||||
-- bpgen/sn_humanio
|
||||
-- tst_fx2loop_hiomap
|
||||
-- tst_fx2loop
|
||||
-- bplib/fx2lib/fx2_2fifoctl_as [sys_conf_fx2_type="as2"]
|
||||
-- bplib/fx2lib/fx2_2fifoctl_ic [sys_conf_fx2_type="ic2"]
|
||||
-- bplib/fx2lib/fx2_3fifoctl_ic [sys_conf_fx2_type="ic3"]
|
||||
-- bplib/nxcramlib/nx_cram_dummy
|
||||
--
|
||||
-- Test bench: -
|
||||
--
|
||||
-- Target Devices: generic
|
||||
-- Tool versions: xst 13.3, 14.5; ghdl 0.29
|
||||
--
|
||||
-- Synthesized (xst):
|
||||
-- Date Rev ise Target flop lutl lutm slic t peri ctl/MHz
|
||||
-- 2013-04-25 510 14.5 P58f xc6slx16-2 416 516 68 199 p 5.3 ic3/150
|
||||
-- 2013-04-24 510 13.3 O76d xc6slx16-2 417 674 68 228 p 5.3 ic3/175
|
||||
-- 2012-04-09 461 13.3 O76d xc6slx16-2 429 620 48 232 p 7.2 ic3/100
|
||||
--
|
||||
-- 2013-04-25 510 14.5 P58f xc6slx16-2 349 427 48 163 p 5.4 ic2/150
|
||||
-- 2013-04-24 510 13.3 O76d xc6slx16-2 355 569 48 208 p 5.4 ic2/175
|
||||
-- 2012-04-09 461 13.3 O76d xc6slx16-2 347 499 32 175 p 7.9 ic2/100
|
||||
--
|
||||
-- 2013-04-24 510 13.3 O76d xc6slx16-2 299 486 32 175 p FAIL as2/100
|
||||
-- 2012-04-09 461 13.3 O76d xc6slx16-2 299 460 32 164 p FAIL as2/100
|
||||
--
|
||||
-- Revision History:
|
||||
-- Date Rev Version Comment
|
||||
-- 2013-04-24 510 1.0.1 CLKDIV.CDUWIDTH now 8, support >127 sysclk
|
||||
-- 2012-04-09 461 1.0 Initial version (derived from sys_tst_fx2loop_n2)
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
use work.slvtypes.all;
|
||||
use work.xlib.all;
|
||||
use work.genlib.all;
|
||||
use work.bpgenlib.all;
|
||||
use work.tst_fx2looplib.all;
|
||||
use work.fx2lib.all;
|
||||
use work.nxcramlib.all;
|
||||
use work.sys_conf.all;
|
||||
|
||||
-- ----------------------------------------------------------------------------
|
||||
|
||||
entity sys_tst_fx2loop_n3 is -- top level
|
||||
-- implements nexys3_aif + fx2 pins
|
||||
port (
|
||||
I_CLK100 : in slbit; -- 100 MHz clock
|
||||
I_RXD : in slbit; -- receive data (board view)
|
||||
O_TXD : out slbit; -- transmit data (board view)
|
||||
I_SWI : in slv8; -- n3 switches
|
||||
I_BTN : in slv5; -- n3 buttons
|
||||
O_LED : out slv8; -- n3 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 slbit; -- cram: chip enable (act.low)
|
||||
O_MEM_BE_N : out slv2; -- cram: byte enables (act.low)
|
||||
O_MEM_WE_N : out slbit; -- cram: write enable (act.low)
|
||||
O_MEM_OE_N : out slbit; -- cram: output enable (act.low)
|
||||
O_MEM_ADV_N : out slbit; -- cram: address valid (act.low)
|
||||
O_MEM_CLK : out slbit; -- cram: clock
|
||||
O_MEM_CRE : out slbit; -- cram: command register enable
|
||||
I_MEM_WAIT : in slbit; -- cram: mem wait
|
||||
O_MEM_ADDR : out slv23; -- cram: address lines
|
||||
IO_MEM_DATA : inout slv16; -- cram: data lines
|
||||
O_PPCM_CE_N : out slbit; -- ppcm: ...
|
||||
O_PPCM_RST_N : out slbit; -- ppcm: ...
|
||||
I_FX2_IFCLK : in slbit; -- fx2: interface clock
|
||||
O_FX2_FIFO : out slv2; -- fx2: fifo address
|
||||
I_FX2_FLAG : in slv4; -- fx2: fifo flags
|
||||
O_FX2_SLRD_N : out slbit; -- fx2: read enable (act.low)
|
||||
O_FX2_SLWR_N : out slbit; -- fx2: write enable (act.low)
|
||||
O_FX2_SLOE_N : out slbit; -- fx2: output enable (act.low)
|
||||
O_FX2_PKTEND_N : out slbit; -- fx2: packet end (act.low)
|
||||
IO_FX2_DATA : inout slv8 -- fx2: data lines
|
||||
);
|
||||
end sys_tst_fx2loop_n3;
|
||||
|
||||
architecture syn of sys_tst_fx2loop_n3 is
|
||||
|
||||
signal CLK : slbit := '0';
|
||||
signal RESET : slbit := '0';
|
||||
|
||||
signal CE_USEC : slbit := '0';
|
||||
signal CE_MSEC : slbit := '0';
|
||||
|
||||
signal SWI : slv8 := (others=>'0');
|
||||
signal BTN : slv5 := (others=>'0');
|
||||
signal LED : slv8 := (others=>'0');
|
||||
signal DSP_DAT : slv16 := (others=>'0');
|
||||
signal DSP_DP : slv4 := (others=>'0');
|
||||
|
||||
signal LED_MAP : slv8 := (others=>'0');
|
||||
|
||||
signal HIO_CNTL : hio_cntl_type := hio_cntl_init;
|
||||
signal HIO_STAT : hio_stat_type := hio_stat_init;
|
||||
|
||||
signal FX2_RXDATA : slv8 := (others=>'0');
|
||||
signal FX2_RXVAL : slbit := '0';
|
||||
signal FX2_RXHOLD : slbit := '0';
|
||||
signal FX2_RXAEMPTY : slbit := '0';
|
||||
signal FX2_TXDATA : slv8 := (others=>'0');
|
||||
signal FX2_TXENA : slbit := '0';
|
||||
signal FX2_TXBUSY : slbit := '0';
|
||||
signal FX2_TXAFULL : slbit := '0';
|
||||
signal FX2_TX2DATA : slv8 := (others=>'0');
|
||||
signal FX2_TX2ENA : slbit := '0';
|
||||
signal FX2_TX2BUSY : slbit := '1';
|
||||
signal FX2_TX2AFULL : slbit := '0';
|
||||
signal FX2_MONI : fx2ctl_moni_type := fx2ctl_moni_init;
|
||||
|
||||
begin
|
||||
|
||||
assert (sys_conf_clksys mod 1000000) = 0
|
||||
report "assert sys_conf_clksys on MHz grid"
|
||||
severity failure;
|
||||
|
||||
DCM : dcm_sfs
|
||||
generic map (
|
||||
CLKFX_DIVIDE => sys_conf_clkfx_divide,
|
||||
CLKFX_MULTIPLY => sys_conf_clkfx_multiply,
|
||||
CLKIN_PERIOD => 10.0)
|
||||
port map (
|
||||
CLKIN => I_CLK100,
|
||||
CLKFX => CLK,
|
||||
LOCKED => open
|
||||
);
|
||||
|
||||
CLKDIV : clkdivce
|
||||
generic map (
|
||||
CDUWIDTH => 8, -- good for up to 255 MHz !
|
||||
USECDIV => sys_conf_clksys_mhz,
|
||||
MSECDIV => 1000)
|
||||
port map (
|
||||
CLK => CLK,
|
||||
CE_USEC => CE_USEC,
|
||||
CE_MSEC => CE_MSEC
|
||||
);
|
||||
|
||||
HIO : sn_humanio
|
||||
generic map (
|
||||
BWIDTH => 5,
|
||||
DEBOUNCE => sys_conf_hio_debounce)
|
||||
port map (
|
||||
CLK => CLK,
|
||||
RESET => '0',
|
||||
CE_MSEC => CE_MSEC,
|
||||
SWI => SWI,
|
||||
BTN => BTN,
|
||||
LED => LED,
|
||||
DSP_DAT => DSP_DAT,
|
||||
DSP_DP => DSP_DP,
|
||||
I_SWI => I_SWI,
|
||||
I_BTN => I_BTN,
|
||||
O_LED => O_LED,
|
||||
O_ANO_N => O_ANO_N,
|
||||
O_SEG_N => O_SEG_N
|
||||
);
|
||||
|
||||
RESET <= BTN(0); -- BTN(0) will reset tester !!
|
||||
|
||||
HIOMAP : tst_fx2loop_hiomap
|
||||
port map (
|
||||
CLK => CLK,
|
||||
RESET => RESET,
|
||||
HIO_CNTL => HIO_CNTL,
|
||||
HIO_STAT => HIO_STAT,
|
||||
FX2_MONI => FX2_MONI,
|
||||
SWI => SWI,
|
||||
BTN => BTN(3 downto 0),
|
||||
LED => LED_MAP,
|
||||
DSP_DAT => DSP_DAT,
|
||||
DSP_DP => DSP_DP
|
||||
);
|
||||
|
||||
proc_led: process (SWI, LED_MAP, FX2_TX2BUSY, FX2_TX2ENA,
|
||||
FX2_TXBUSY, FX2_TXENA, FX2_RXHOLD, FX2_RXVAL)
|
||||
begin
|
||||
|
||||
if SWI(4) = '1' then
|
||||
LED(7) <= '0';
|
||||
LED(6) <= '0';
|
||||
LED(5) <= FX2_TX2BUSY;
|
||||
LED(4) <= FX2_TX2ENA;
|
||||
LED(3) <= FX2_TXBUSY;
|
||||
LED(2) <= FX2_TXENA;
|
||||
LED(1) <= FX2_RXHOLD;
|
||||
LED(0) <= FX2_RXVAL;
|
||||
else
|
||||
LED <= LED_MAP;
|
||||
end if;
|
||||
|
||||
end process proc_led;
|
||||
|
||||
|
||||
TST : tst_fx2loop
|
||||
port map (
|
||||
CLK => CLK,
|
||||
RESET => RESET,
|
||||
CE_MSEC => CE_MSEC,
|
||||
HIO_CNTL => HIO_CNTL,
|
||||
HIO_STAT => HIO_STAT,
|
||||
FX2_MONI => FX2_MONI,
|
||||
RXDATA => FX2_RXDATA,
|
||||
RXVAL => FX2_RXVAL,
|
||||
RXHOLD => FX2_RXHOLD,
|
||||
TXDATA => FX2_TXDATA,
|
||||
TXENA => FX2_TXENA,
|
||||
TXBUSY => FX2_TXBUSY,
|
||||
TX2DATA => FX2_TX2DATA,
|
||||
TX2ENA => FX2_TX2ENA,
|
||||
TX2BUSY => FX2_TX2BUSY
|
||||
);
|
||||
|
||||
FX2_CNTL_AS : if sys_conf_fx2_type = "as2" generate
|
||||
CNTL : fx2_2fifoctl_as
|
||||
generic map (
|
||||
RXFAWIDTH => 5,
|
||||
TXFAWIDTH => 5,
|
||||
CCWIDTH => sys_conf_fx2_ccwidth,
|
||||
RXAEMPTY_THRES => 1,
|
||||
TXAFULL_THRES => 1,
|
||||
PETOWIDTH => sys_conf_fx2_petowidth,
|
||||
RDPWLDELAY => sys_conf_fx2_rdpwldelay,
|
||||
RDPWHDELAY => sys_conf_fx2_rdpwhdelay,
|
||||
WRPWLDELAY => sys_conf_fx2_wrpwldelay,
|
||||
WRPWHDELAY => sys_conf_fx2_wrpwhdelay,
|
||||
FLAGDELAY => sys_conf_fx2_flagdelay)
|
||||
port map (
|
||||
CLK => CLK,
|
||||
CE_USEC => CE_USEC,
|
||||
RESET => RESET,
|
||||
RXDATA => FX2_RXDATA,
|
||||
RXVAL => FX2_RXVAL,
|
||||
RXHOLD => FX2_RXHOLD,
|
||||
RXAEMPTY => FX2_RXAEMPTY,
|
||||
TXDATA => FX2_TXDATA,
|
||||
TXENA => FX2_TXENA,
|
||||
TXBUSY => FX2_TXBUSY,
|
||||
TXAFULL => FX2_TXAFULL,
|
||||
MONI => FX2_MONI,
|
||||
I_FX2_IFCLK => I_FX2_IFCLK,
|
||||
O_FX2_FIFO => O_FX2_FIFO,
|
||||
I_FX2_FLAG => I_FX2_FLAG,
|
||||
O_FX2_SLRD_N => O_FX2_SLRD_N,
|
||||
O_FX2_SLWR_N => O_FX2_SLWR_N,
|
||||
O_FX2_SLOE_N => O_FX2_SLOE_N,
|
||||
O_FX2_PKTEND_N => O_FX2_PKTEND_N,
|
||||
IO_FX2_DATA => IO_FX2_DATA
|
||||
);
|
||||
end generate FX2_CNTL_AS;
|
||||
|
||||
FX2_CNTL_IC : if sys_conf_fx2_type = "ic2" generate
|
||||
CNTL : fx2_2fifoctl_ic
|
||||
generic map (
|
||||
RXFAWIDTH => 5,
|
||||
TXFAWIDTH => 5,
|
||||
PETOWIDTH => sys_conf_fx2_petowidth,
|
||||
CCWIDTH => sys_conf_fx2_ccwidth,
|
||||
RXAEMPTY_THRES => 1,
|
||||
TXAFULL_THRES => 1)
|
||||
port map (
|
||||
CLK => CLK,
|
||||
RESET => RESET,
|
||||
RXDATA => FX2_RXDATA,
|
||||
RXVAL => FX2_RXVAL,
|
||||
RXHOLD => FX2_RXHOLD,
|
||||
RXAEMPTY => FX2_RXAEMPTY,
|
||||
TXDATA => FX2_TXDATA,
|
||||
TXENA => FX2_TXENA,
|
||||
TXBUSY => FX2_TXBUSY,
|
||||
TXAFULL => FX2_TXAFULL,
|
||||
MONI => FX2_MONI,
|
||||
I_FX2_IFCLK => I_FX2_IFCLK,
|
||||
O_FX2_FIFO => O_FX2_FIFO,
|
||||
I_FX2_FLAG => I_FX2_FLAG,
|
||||
O_FX2_SLRD_N => O_FX2_SLRD_N,
|
||||
O_FX2_SLWR_N => O_FX2_SLWR_N,
|
||||
O_FX2_SLOE_N => O_FX2_SLOE_N,
|
||||
O_FX2_PKTEND_N => O_FX2_PKTEND_N,
|
||||
IO_FX2_DATA => IO_FX2_DATA
|
||||
);
|
||||
end generate FX2_CNTL_IC;
|
||||
|
||||
FX2_CNTL_IC3 : if sys_conf_fx2_type = "ic3" generate
|
||||
CNTL : fx2_3fifoctl_ic
|
||||
generic map (
|
||||
RXFAWIDTH => 5,
|
||||
TXFAWIDTH => 5,
|
||||
PETOWIDTH => sys_conf_fx2_petowidth,
|
||||
CCWIDTH => sys_conf_fx2_ccwidth,
|
||||
RXAEMPTY_THRES => 1,
|
||||
TXAFULL_THRES => 1,
|
||||
TX2AFULL_THRES => 1)
|
||||
port map (
|
||||
CLK => CLK,
|
||||
RESET => RESET,
|
||||
RXDATA => FX2_RXDATA,
|
||||
RXVAL => FX2_RXVAL,
|
||||
RXHOLD => FX2_RXHOLD,
|
||||
RXAEMPTY => FX2_RXAEMPTY,
|
||||
TXDATA => FX2_TXDATA,
|
||||
TXENA => FX2_TXENA,
|
||||
TXBUSY => FX2_TXBUSY,
|
||||
TXAFULL => FX2_TXAFULL,
|
||||
TX2DATA => FX2_TX2DATA,
|
||||
TX2ENA => FX2_TX2ENA,
|
||||
TX2BUSY => FX2_TX2BUSY,
|
||||
TX2AFULL => FX2_TX2AFULL,
|
||||
MONI => FX2_MONI,
|
||||
I_FX2_IFCLK => I_FX2_IFCLK,
|
||||
O_FX2_FIFO => O_FX2_FIFO,
|
||||
I_FX2_FLAG => I_FX2_FLAG,
|
||||
O_FX2_SLRD_N => O_FX2_SLRD_N,
|
||||
O_FX2_SLWR_N => O_FX2_SLWR_N,
|
||||
O_FX2_SLOE_N => O_FX2_SLOE_N,
|
||||
O_FX2_PKTEND_N => O_FX2_PKTEND_N,
|
||||
IO_FX2_DATA => IO_FX2_DATA
|
||||
);
|
||||
end generate FX2_CNTL_IC3;
|
||||
|
||||
SRAM_PROT : nx_cram_dummy -- connect CRAM 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_ADV_N => O_MEM_ADV_N,
|
||||
O_MEM_CLK => O_MEM_CLK,
|
||||
O_MEM_CRE => O_MEM_CRE,
|
||||
I_MEM_WAIT => I_MEM_WAIT,
|
||||
O_MEM_ADDR => O_MEM_ADDR,
|
||||
IO_MEM_DATA => IO_MEM_DATA
|
||||
);
|
||||
|
||||
O_PPCM_CE_N <= '1'; -- keep parallel PCM memory disabled
|
||||
O_PPCM_RST_N <= '1'; --
|
||||
|
||||
O_TXD <= I_RXD; -- loop-back in serial port...
|
||||
|
||||
end syn;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# configure tb_nexsy2_fusp with sys_tst_rlink_n2 target;
|
||||
# configure tb_nexsy2_fusp_cuff with sys_tst_rlink_cuff_n2 target;
|
||||
# use vhdl configure file (tb_tst_rlink_cuff_ic_n2.vhd) to allow
|
||||
# that all configurations will co-exist in work library
|
||||
${nexys2_fusp_cuff_aif := ../sys_tst_rlink_cuff_ic_n2.vbom}
|
||||
|
||||
6
rtl/sys_gen/tst_rlink_cuff/nexys3/ic/tb/.cvsignore
Normal file
6
rtl/sys_gen/tst_rlink_cuff/nexys3/ic/tb/.cvsignore
Normal file
@@ -0,0 +1,6 @@
|
||||
tb_tst_rlink_cuff_ic_n3
|
||||
tb_tst_rlink_cuff_ic_n3_[sft]sim
|
||||
rlink_cext_fifo_rx
|
||||
rlink_cext_fifo_tx
|
||||
rlink_cext_conf
|
||||
*.dep_ucf_cpp
|
||||
32
rtl/sys_gen/tst_rlink_cuff/nexys3/ic/tb/Makefile
Normal file
32
rtl/sys_gen/tst_rlink_cuff/nexys3/ic/tb/Makefile
Normal file
@@ -0,0 +1,32 @@
|
||||
# $Id: Makefile 512 2013-04-28 07:44:02Z mueller $
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2013-04-27 512 1.0 Initial version
|
||||
#
|
||||
EXE_all = tb_tst_rlink_cuff_ic_n3
|
||||
#
|
||||
include $(RETROBASE)/rtl/make/xflow_default_nexys3.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
|
||||
rm -f sys_tst_rlink_cuff_ic_n3.ucf
|
||||
#
|
||||
#-----
|
||||
#
|
||||
include $(RETROBASE)/rtl/make/generic_ghdl.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 $(wildcard *.o.dep_ghdl)
|
||||
endif
|
||||
#
|
||||
60
rtl/sys_gen/tst_rlink_cuff/nexys3/ic/tb/sys_conf_sim.vhd
Normal file
60
rtl/sys_gen/tst_rlink_cuff/nexys3/ic/tb/sys_conf_sim.vhd
Normal file
@@ -0,0 +1,60 @@
|
||||
-- $Id: sys_conf_sim.vhd 512 2013-04-28 07:44:02Z mueller $
|
||||
--
|
||||
-- Copyright 2013- 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.
|
||||
--
|
||||
------------------------------------------------------------------------------
|
||||
-- Package Name: sys_conf
|
||||
-- Description: Definitions for sys_tst_rlink_cuff_ic_n3 (for simulation)
|
||||
--
|
||||
-- Dependencies: -
|
||||
-- Tool versions: xst 13.3; ghdl 0.29
|
||||
-- Revision History:
|
||||
-- Date Rev Version Comment
|
||||
-- 2013-04-27 512 1.0 Initial version
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
|
||||
use work.slvtypes.all;
|
||||
|
||||
package sys_conf is
|
||||
|
||||
constant sys_conf_clkfx_divide : positive := 1;
|
||||
constant sys_conf_clkfx_multiply : positive := 1;
|
||||
|
||||
constant sys_conf_ser2rri_cdinit : integer := 1-1; -- 1 cycle/bit in sim
|
||||
|
||||
constant sys_conf_hio_debounce : boolean := false; -- no debouncers
|
||||
|
||||
constant sys_conf_fx2_type : string := "ic2";
|
||||
|
||||
-- dummy values defs for generic parameters of as controller
|
||||
constant sys_conf_fx2_rdpwldelay : positive := 1;
|
||||
constant sys_conf_fx2_rdpwhdelay : positive := 1;
|
||||
constant sys_conf_fx2_wrpwldelay : positive := 1;
|
||||
constant sys_conf_fx2_wrpwhdelay : positive := 1;
|
||||
constant sys_conf_fx2_flagdelay : positive := 1;
|
||||
|
||||
-- pktend timer setting
|
||||
-- petowidth=10 -> 2^10 30 MHz clocks -> ~33 usec (normal operation)
|
||||
constant sys_conf_fx2_petowidth : positive := 10;
|
||||
|
||||
constant sys_conf_fx2_ccwidth : positive := 5;
|
||||
|
||||
-- derived constants
|
||||
|
||||
constant sys_conf_clksys : integer :=
|
||||
(100000000/sys_conf_clkfx_divide)*sys_conf_clkfx_multiply;
|
||||
constant sys_conf_clksys_mhz : integer := sys_conf_clksys/1000000;
|
||||
|
||||
end package sys_conf;
|
||||
@@ -0,0 +1 @@
|
||||
../sys_tst_rlink_cuff_ic_n3.ucf_cpp
|
||||
@@ -0,0 +1,7 @@
|
||||
# configure tb_nexsy3_fusp_cuff with sys_tst_rlink_cuff_n3 target;
|
||||
# use vhdl configure file (tb_tst_rlink_cuff_ic_n3.vhd) to allow
|
||||
# that all configurations will co-exist in work library
|
||||
${nexys3_fusp_cuff_aif := ../sys_tst_rlink_cuff_ic_n3.vbom}
|
||||
sys_conf = sys_conf_sim.vhd
|
||||
../../../../../bplib/nexys3/tb/tb_nexys3_fusp_cuff.vbom
|
||||
tb_tst_rlink_cuff_ic_n3.vhd
|
||||
@@ -0,0 +1,40 @@
|
||||
-- $Id: tb_tst_rlink_cuff_ic_n3.vhd 512 2013-04-28 07:44:02Z mueller $
|
||||
--
|
||||
-- Copyright 2013- 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_tst_rlink_cuff_ic_n3
|
||||
-- Description: Configuration for tb_tst_rlink_cuff_ic_n3 for
|
||||
-- tb_nexys3_fusp_cuff
|
||||
--
|
||||
-- Dependencies: sys_tst_rlink_cuff_n3 (fx2_type = 'ic2')
|
||||
--
|
||||
-- To test: sys_tst_rlink_cuff_n3 (fx2_type = 'ic2')
|
||||
--
|
||||
-- Verified:
|
||||
-- Date Rev Code ghdl ise Target Comment
|
||||
-- 2013-01-xx xxx - 0.29 13.3 O76d xc6slx16-2 u:???
|
||||
--
|
||||
-- Revision History:
|
||||
-- Date Rev Version Comment
|
||||
-- 2013-04-27 512 1.0 Initial version
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
configuration tb_tst_rlink_cuff_ic_n3 of tb_nexys3_fusp_cuff is
|
||||
|
||||
for sim
|
||||
for all : nexys3_fusp_cuff_aif
|
||||
use entity work.sys_tst_rlink_cuff_n3;
|
||||
end for;
|
||||
end for;
|
||||
|
||||
end tb_tst_rlink_cuff_ic_n3;
|
||||
@@ -0,0 +1,6 @@
|
||||
# configure for _*sim case
|
||||
# Note: this tb uses sys_tst_rlink_n3.vbom in local directory
|
||||
# (not in .. as usual) to allow a tb specific configure !!!
|
||||
nexys3_fusp_cuff_aif = sys_tst_rlink_cuff_ic_n3_ssim.vhd
|
||||
tb_tst_rlink_cuff_ic_n3.vbom
|
||||
@top:tb_tst_rlink_cuff_ic_n3
|
||||
@@ -1,4 +1,4 @@
|
||||
-- $Id: sys_tst_rlink_cuff_n3.vhd 476 2013-01-26 22:23:53Z mueller $
|
||||
-- $Id: sys_tst_rlink_cuff_n3.vhd 512 2013-04-28 07:44:02Z mueller $
|
||||
--
|
||||
-- Copyright 2013- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
--
|
||||
@@ -32,7 +32,7 @@
|
||||
--
|
||||
-- Synthesized (xst):
|
||||
-- Date Rev ise Target flop lutl lutm slic t peri ctl/MHz
|
||||
-- 2013-01-04 469 13.3 O76d xc3s1200e-4 ??? ???? ??? ???? p ??.? ic2/ 50
|
||||
-- 2013-01-04 469 13.3 O76d xc6slx16-2 ??? ???? ??? ???? p ??.? ic2/ 50
|
||||
--
|
||||
-- Revision History:
|
||||
-- Date Rev Version Comment
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
; $Id: 211bsd_rk_boot.pcmd 312 2010-07-04 18:25:58Z mueller $
|
||||
;
|
||||
; Setup file for 211bsd RK based system (w11a, in sys/tb area...)
|
||||
;
|
||||
; Usage:
|
||||
;
|
||||
; telnet_starter -d DL0 &
|
||||
; telnet_starter -d DL1 &
|
||||
;
|
||||
; dorri -s3 @211bsd_rk_boot.pcmd (for ghdl sim of tb_w11a_s3)
|
||||
; dorri -n2 @211bsd_rk_boot.pcmd (for ghdl sim of tb_w11a_n2)
|
||||
;
|
||||
; dorri -t @211bsd_rk_boot.pcmd (fpga link via /dev/ttyS0)
|
||||
; dorri -u0,460 @211bsd_rk_boot.pcmd (fpga link via /dev/ttyUSB0)
|
||||
;
|
||||
.mode serv11
|
||||
;
|
||||
att TT0 8000
|
||||
att TT1 8001
|
||||
;
|
||||
reset
|
||||
att rk0 211bsd_rk_root.dsk
|
||||
att rk1 211bsd_rk_swap.dsk
|
||||
att rk2 211bsd_rk_tmp.dsk
|
||||
att rk3 211bsd_rk_bin.dsk
|
||||
att rk4 211bsd_rk_usr.dsk
|
||||
boot rk0
|
||||
server
|
||||
@@ -1,38 +0,0 @@
|
||||
# $Id: 211bsd_rk_boot.tcl 511 2013-04-27 13:51:46Z mueller $
|
||||
#
|
||||
# Setup file for 211bsd RK based system (w11a, in sys/tb area...)
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# telnet_starter -d DL0 &
|
||||
# telnet_starter -d DL1 &
|
||||
# torri -xxx @211bsd_rk_boot.tcl ( -xxx depends on sim or fpga connect)
|
||||
#
|
||||
|
||||
# setup w11 cpu
|
||||
puts [rlw]
|
||||
|
||||
# 2.11 bsd uses parity, so strip it
|
||||
cpu0tta0 set to7bit 1
|
||||
cpu0ttb0 set to7bit 1
|
||||
|
||||
# setup tcp links for terminals
|
||||
cpu0tta0 att "tcp:?port=8000"
|
||||
cpu0ttb0 att "tcp:?port=8001"
|
||||
|
||||
# setup log files
|
||||
cpu0tta0 set log "tt_dl0.log?crlf"
|
||||
cpu0ttb0 set log "tt_dl1.log?crlf"
|
||||
|
||||
# mount disks
|
||||
cpu0rka0 att 211bsd_rk_root.dsk
|
||||
cpu0rka1 att 211bsd_rk_swap.dsk
|
||||
cpu0rka2 att 211bsd_rk_tmp.dsk
|
||||
cpu0rka3 att 211bsd_rk_bin.dsk
|
||||
cpu0rka4 att 211bsd_rk_usr.dsk
|
||||
|
||||
# and boot
|
||||
#cpu0rka set trace 1
|
||||
rw11::cpumon
|
||||
rw11::cpucons
|
||||
cpu0 boot rka0
|
||||
@@ -1,207 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
# $Id: dorri 510 2013-04-26 16:14:57Z mueller $
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2011-12-03 435 1.5 add w11a_n3 support; add break/flow control to -u
|
||||
# 2010-05-29 296 1.4 allow -ux,baud (usb devnum and baudrate)
|
||||
# 2010-05-28 295 1.3 w11a_s3/w11a_n2 support: -s3 and -n2 instead of -f
|
||||
# add -tmu option
|
||||
# 2010-05-03 287 1.2 add -u[123] options for fast usb serport
|
||||
# 2009-08-01 237 1.1.1 use 115200 instead of 38400 as default baud rate
|
||||
# 2009-04-26 209 1.1 add -b (batch) option
|
||||
# 2009-04-11 206 1.0 Initial version
|
||||
#
|
||||
|
||||
use 5.005; # require Perl 5.005 or higher
|
||||
use strict; # require strict checking
|
||||
use FileHandle;
|
||||
|
||||
sub print_usage;
|
||||
|
||||
autoflush STDOUT 1; # autoflush, so noting lost on exec later
|
||||
|
||||
my $opt_b;
|
||||
my $opt_io = '';
|
||||
my $opt_tmu;
|
||||
my $pirri;
|
||||
my $val_cmax="3";
|
||||
my $val_time="3.";
|
||||
my $val_term=",115200,1";
|
||||
my $val_log="rri.log";
|
||||
my $val_tb_s3="tbw ../s3board/tb/tb_w11a_s3";
|
||||
my $val_tb_n2="tbw ../nexys2/tb/tb_w11a_n2";
|
||||
my $val_tb_n3="tbw ../nexys3/tb/tb_w11a_n3";
|
||||
my $val_tb;
|
||||
my $val_e;
|
||||
|
||||
my @arglist;
|
||||
|
||||
my %baudtbl = (
|
||||
"57" => 57600,
|
||||
"115" => 115200,
|
||||
"230" => 230400,
|
||||
"460" => 460800,
|
||||
"500" => 500000,
|
||||
"1000" => 1000000,
|
||||
"2000" => 2000000,
|
||||
"3000" => 2000000
|
||||
);
|
||||
|
||||
#
|
||||
# process dorri options
|
||||
#
|
||||
while (scalar(@ARGV)) {
|
||||
my $curarg = $ARGV[0];
|
||||
if ($curarg =~ m{^-b$} ) { # -b
|
||||
$opt_b = 1;
|
||||
shift @ARGV;
|
||||
} elsif ($curarg =~ m{^-tmu$} ) { # -tmu
|
||||
$opt_tmu = 1;
|
||||
shift @ARGV;
|
||||
} elsif ($curarg =~ m{^-s3$} ) { # -s3
|
||||
$opt_io = "f";
|
||||
$val_tb = $val_tb_s3;
|
||||
shift @ARGV;
|
||||
} elsif ($curarg =~ m{^-n2$} ) { # -n2
|
||||
$opt_io = "f";
|
||||
$val_tb = $val_tb_n2;
|
||||
shift @ARGV;
|
||||
} elsif ($curarg =~ m{^-n3$} ) { # -n3
|
||||
$opt_io = "f";
|
||||
$val_tb = $val_tb_n3;
|
||||
shift @ARGV;
|
||||
} elsif ($curarg =~ m{^-t$} ) { # -t
|
||||
$opt_io = "t";
|
||||
|
||||
} elsif ($curarg =~ m{^-u(\d),?} ) { # -ux...
|
||||
my $devnum = $1;
|
||||
my ($dev,$baud,$break,$flow) = split /,/,$curarg;
|
||||
$baud = "115" unless defined $baud;
|
||||
$break = 1 unless defined $break; # default: break
|
||||
$flow = 1 unless defined $flow; # default: cts
|
||||
|
||||
if ($baud !~ m{^\d*$} || $break !~ m{^[01]$} || $flow !~ m{^[012]$}) {
|
||||
print STDERR "dorri-E: invalid format of -u option\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
my $baudrate;
|
||||
if (defined $baudtbl{$baud}) {
|
||||
$baudrate = $baudtbl{$baud};
|
||||
} else {
|
||||
print STDERR "dorri-E: invalid baudrate specification $baud\n";
|
||||
exit 1;
|
||||
}
|
||||
$opt_io = "t";
|
||||
$val_term = sprintf "/dev/ttyUSB%d,%d,%d,%d",
|
||||
$devnum, $baudrate, $break, $flow;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-e$} ) { # -e <file>
|
||||
print STDERR "dorri-W: multiple -e options, only last taken\n"
|
||||
if defined $val_e;
|
||||
shift @ARGV;
|
||||
if (scalar(@ARGV) == 0 || $ARGV[0] =~ m{^-}) {
|
||||
print STDERR "dorri-E: no file name after -e option\n";
|
||||
exit 1;
|
||||
} else {
|
||||
$val_e = shift @ARGV;
|
||||
if (not -r $val_e) {
|
||||
print STDERR "dorri-E: file '$val_e' not found\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# rename old log file
|
||||
#
|
||||
if (-r $val_log) {
|
||||
my $old_log = $val_log;
|
||||
$old_log =~ s{\.log}{\.old\.log};
|
||||
rename $val_log, $old_log
|
||||
or die "failed to rename: $!";
|
||||
}
|
||||
|
||||
#
|
||||
# check that either -s3/n2/n3 or -t given
|
||||
# setup pi_rri options for either case
|
||||
#
|
||||
|
||||
if ($opt_io eq "f") {
|
||||
push @arglist, "--fifo";
|
||||
push @arglist, "--run";
|
||||
push @arglist, $val_tb;
|
||||
} elsif ($opt_io eq "t") {
|
||||
push @arglist, "--term=$val_term";
|
||||
} else {
|
||||
print STDERR "dorri-E: neither -s3/-n2/-n3 nor -t or -u specified\n";
|
||||
print_usage();
|
||||
exit 1;
|
||||
}
|
||||
|
||||
#
|
||||
# setup all other options
|
||||
#
|
||||
|
||||
push @arglist, "--timeout=$val_time";
|
||||
push @arglist, "--cmax=$val_cmax";
|
||||
push @arglist, "--log=$val_log";
|
||||
push @arglist, "--dserv";
|
||||
push @arglist, "--tserv";
|
||||
push @arglist, "--int" unless $opt_b;
|
||||
|
||||
if (defined $val_e) {
|
||||
push @arglist, ".mode serv11";
|
||||
push @arglist, "ldabs $val_e";
|
||||
push @arglist, "set sim tmu 1" if $opt_tmu;
|
||||
push @arglist, "start 200";
|
||||
}
|
||||
|
||||
while (scalar(@ARGV)) {
|
||||
my $curarg = shift @ARGV;
|
||||
if ($curarg =~ m{^@(.*)$} && ! -r $1) {
|
||||
print STDERR "dorri-E: file '$1' not found\n";
|
||||
exit 1;
|
||||
}
|
||||
push @arglist,$curarg;
|
||||
}
|
||||
|
||||
if (defined $val_e) {
|
||||
push @arglist, "server";
|
||||
}
|
||||
|
||||
#
|
||||
# find pi_rri executable
|
||||
#
|
||||
|
||||
$pirri=`which pi_rri`;
|
||||
chomp $pirri;
|
||||
if ($pirri eq "" || ! -e $pirri) {
|
||||
print STDERR "dorri-E: failed to locate pi_rri\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
#
|
||||
# print command file
|
||||
#
|
||||
if (1) {
|
||||
print "pi_rri ", join (" ", map {(m{\s}) ? "\"$_\"" : $_} @arglist) , "\n";
|
||||
}
|
||||
|
||||
#
|
||||
# and do it
|
||||
#
|
||||
exec $pirri, @arglist
|
||||
or die "failed to exec: $!";
|
||||
|
||||
exit 1;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
sub print_usage {
|
||||
print "usage: dorri [-f] [-t] [-u(123) [-e file] <pi_rri opts and cmds>...\n";
|
||||
}
|
||||
@@ -1,229 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
# $Id: torri 511 2013-04-27 13:51:46Z mueller $
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2013-04-26 510 1.0 Initial version (derived from dorri)
|
||||
#
|
||||
|
||||
use 5.005; # require Perl 5.005 or higher
|
||||
use strict; # require strict checking
|
||||
use FileHandle;
|
||||
|
||||
sub print_usage;
|
||||
|
||||
autoflush STDOUT 1; # autoflush, so noting lost on exec later
|
||||
|
||||
my $opt_b;
|
||||
my $opt_io = '';
|
||||
my $opt_f = '';
|
||||
my $opt_tmu;
|
||||
my $tirri;
|
||||
my $val_term;
|
||||
my $val_tb_s3='tbw ../s3board/tb/tb_w11a_s3';
|
||||
my $val_tb_n2='tbw ../nexys2/tb/tb_w11a_n2';
|
||||
my $val_tb_n3='tbw ../nexys3/tb/tb_w11a_n3';
|
||||
my $val_tb;
|
||||
my $val_e;
|
||||
|
||||
my @arglist;
|
||||
|
||||
#
|
||||
# process torri options
|
||||
#
|
||||
while (scalar(@ARGV)) {
|
||||
my $curarg = $ARGV[0];
|
||||
|
||||
if ($curarg =~ m{^-b$} ) { # -b
|
||||
$opt_b = 1;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-tmu$} ) { # -tmu
|
||||
$opt_tmu = 1;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-s3$} ) { # -s3
|
||||
$opt_io = 'f';
|
||||
$val_tb = $val_tb_s3;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-n2$} ) { # -n2
|
||||
$opt_io = 'f';
|
||||
$val_tb = $val_tb_n2;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-n3$} ) { # -n3
|
||||
$opt_io = 'f';
|
||||
$val_tb = $val_tb_n3;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-f(s\d?|u)$} ) { # -f[su]
|
||||
$opt_f = $1;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-t([su])(\d?),?} ) { # -t[su]...
|
||||
my $devnam = ($1 eq 's') ? '/dev/ttyS' : '/dev/ttyUSB';
|
||||
my $devnum = $2;
|
||||
my ($dev,$baud,$opt1,$opt2) = split /,/,$curarg;
|
||||
$baud = '115k' unless defined $baud;
|
||||
|
||||
if ($baud !~ m{^\d*k?$}) {
|
||||
print STDERR "torri-E: invalid format of -ts or -tu option\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
$opt_io = 't';
|
||||
$val_term = sprintf '%s%d,%s', $devnam, $devnum, $baud;
|
||||
$val_term .= ",$opt1" if defined $opt1;
|
||||
$val_term .= ",$opt2" if defined $opt2;
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-u$} ) { # -u
|
||||
$opt_io = 'u';
|
||||
shift @ARGV;
|
||||
|
||||
} elsif ($curarg =~ m{^-e$} ) { # -e <file>
|
||||
print STDERR "torri-W: multiple -e options, only last taken\n"
|
||||
if defined $val_e;
|
||||
shift @ARGV;
|
||||
if (scalar(@ARGV) == 0 || $ARGV[0] =~ m{^-}) {
|
||||
print STDERR "torri-E: no file name after -e option\n";
|
||||
exit 1;
|
||||
} else {
|
||||
$val_e = shift @ARGV;
|
||||
if (not -r $val_e) {
|
||||
print STDERR "torri-E: file '$val_e' not found\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# check that either -s3/n2/n3 or -t or -u given
|
||||
# setup pi_rri options for either case
|
||||
#
|
||||
|
||||
if ($opt_io eq 'f') {
|
||||
push @arglist, '--fifo';
|
||||
push @arglist, "--run=$val_tb";
|
||||
} elsif ($opt_io eq 't') {
|
||||
push @arglist, "--term=$val_term";
|
||||
} elsif ($opt_io eq 'u') {
|
||||
push @arglist, '--cuff';
|
||||
} else {
|
||||
print STDERR "torri-E: neither -s3/-n2/-n3 nor -t or -u specified\n";
|
||||
print_usage();
|
||||
exit 1;
|
||||
}
|
||||
|
||||
#
|
||||
# setup all other ti_rri options
|
||||
#
|
||||
|
||||
push @arglist, '--logl=2';
|
||||
push @arglist, '--int' unless $opt_b;
|
||||
push @arglist, '--pack=rw11';
|
||||
push @arglist, '--';
|
||||
|
||||
#
|
||||
# actions prior to first exec
|
||||
# setup tmu ect
|
||||
# setup access path --> handle -f options
|
||||
#
|
||||
if ($opt_io eq 'f') {
|
||||
if ($opt_tmu) {
|
||||
push @arglist, 'rlc oob -sbcntl 13 1';
|
||||
}
|
||||
if ($opt_f eq 'u') {
|
||||
push @arglist, 'rlc oob -sbdata 8 0x2';
|
||||
push @arglist, 'rlc oob -sbdata 16 0x4';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#
|
||||
# initialize w11 cpu system
|
||||
#
|
||||
push @arglist, 'rw11::setup_sys';
|
||||
|
||||
#
|
||||
# handle -e option
|
||||
#
|
||||
|
||||
if (defined $val_e) {
|
||||
if ($val_e =~ m/\.mac$/) {
|
||||
push @arglist, "cpu0 ldasm -file $val_e -sym ldasm_sym -lst ldasm_lst";
|
||||
} else {
|
||||
push @arglist, "cpu0 ldabs $val_e";
|
||||
}
|
||||
push @arglist, 'rw11::cpumon';
|
||||
push @arglist, 'rw11::cpucons';
|
||||
push @arglist, 'cpu0 cp -stapc 0200';
|
||||
}
|
||||
|
||||
#
|
||||
# all remaining commands
|
||||
#
|
||||
|
||||
while (scalar(@ARGV)) {
|
||||
my $curarg = shift @ARGV;
|
||||
if ($curarg =~ m{^@(.*)$} && ! -r $1) {
|
||||
print STDERR "torri-E: file '$1' not found\n";
|
||||
exit 1;
|
||||
}
|
||||
push @arglist,$curarg;
|
||||
}
|
||||
|
||||
#
|
||||
# find ti_rri executable
|
||||
#
|
||||
|
||||
$tirri=`which ti_rri`;
|
||||
chomp $tirri;
|
||||
if ($tirri eq '' || ! -e $tirri) {
|
||||
print STDERR "torri-E: failed to locate ti_rri\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
#
|
||||
# print command file
|
||||
#
|
||||
if (1) {
|
||||
print 'ti_rri ', join (' ', map {(m{\s}) ? "\"$_\"" : $_} @arglist) , "\n";
|
||||
}
|
||||
|
||||
#
|
||||
# and do it
|
||||
#
|
||||
exec $tirri, @arglist
|
||||
or die "failed to exec: $!";
|
||||
|
||||
exit 1;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
sub print_usage {
|
||||
print "usage: torri <setup options> <ti_rri opts and cmds>...\n";
|
||||
print " setup options for ghdl simulation runs:\n";
|
||||
print " -s3 start tb_w11a_s3 simulation\n";
|
||||
print " -n2 start tb_w11a_n2 simulation\n";
|
||||
print " -n3 start tb_w11a_n3 simulation\n";
|
||||
print " -f.. simulation communication options\n";
|
||||
print " -fu use cuff data path\n";
|
||||
print " -tmu activate trace and monitoring unit\n";
|
||||
print " setup options for FPGA connects:\n";
|
||||
print " -u use --cuff connect\n";
|
||||
print " -t.. use --term connect\n";
|
||||
print " -ts*[,opts] use /dev/ttyS* (* is device number)\n";
|
||||
print " -tu*[,opts] use /dev/ttyUSB* (* is device number)\n";
|
||||
print " opts can be ',break', ',xon'\n";
|
||||
print " common options:\n";
|
||||
print " -e <file> load and execute file\n";
|
||||
print " file type '.mac': on the fly compile with asm-11\n";
|
||||
print " any other file type: assume lda format\n";
|
||||
print "\n";
|
||||
print " either one of -s3,-n2, or -n3 must be given -> sim run\n";
|
||||
print " or one of -t or -u must be given -> fpga run\n";
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
; $Id: uv5_boot.pcmd 312 2010-07-04 18:25:58Z mueller $
|
||||
;
|
||||
; Setup file for Unix V5 System
|
||||
;
|
||||
; Usage:
|
||||
;
|
||||
; telnet_starter -d DL0 &
|
||||
;
|
||||
; dorri -s3 @uv5_boot.pcmd (for ghdl sim of tb_w11a_s3)
|
||||
; dorri -n2 @uv5_boot.pcmd (for ghdl sim of tb_w11a_n2)
|
||||
;
|
||||
; dorri -t @uv5_boot.pcmd (fpga link via /dev/ttyS0)
|
||||
; dorri -u0,460 @uv5_boot.pcmd (fpga link via /dev/ttyUSB0)
|
||||
;
|
||||
.mode serv11
|
||||
;
|
||||
att TT0 8000
|
||||
;
|
||||
reset
|
||||
att rk0 unix_v5_rk.dsk
|
||||
boot rk0
|
||||
server
|
||||
@@ -1,29 +0,0 @@
|
||||
# $Id: uv5_boot.tcl 511 2013-04-27 13:51:46Z mueller $
|
||||
#
|
||||
# Setup file for Unix V5 System
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# telnet_starter -d DL0 &
|
||||
# torri -xxx @uv5_boot.tcl ( -xxx depends on sim or fpga connect)
|
||||
|
||||
# setup w11 cpu
|
||||
puts [rlw]
|
||||
|
||||
# 2.11 bsd uses parity, so strip it
|
||||
cpu0tta0 set to7bit 1
|
||||
|
||||
# setup tcp links for terminals
|
||||
cpu0tta0 att "tcp:?port=8000"
|
||||
|
||||
# setup log files
|
||||
cpu0tta0 set log "tt_dl0.log?crlf"
|
||||
|
||||
# mount disks
|
||||
cpu0rka0 att unix_v5_rk.dsk
|
||||
|
||||
# and boot
|
||||
#cpu0rka set trace 1
|
||||
rw11::cpumon
|
||||
rw11::cpucons
|
||||
cpu0 boot rka0
|
||||
Reference in New Issue
Block a user