Nouveau "tutorial" pour VASY
This commit is contained in:
parent
2c763fd077
commit
9c9b09b1f4
|
@ -0,0 +1,2 @@
|
|||
rm CATAL Makefile calcul.vhdl compteur.vhdl ex0.stim ex1.stim ex2.stim ex3.stim hadamard hadamard.stim hadamard.vhdl hadamard_1.pat hadamard_2.pat hadamard_3.pat hadamard_tb.vhdl ram.vhdl rom.vhdl sequenceur.vhdl
|
||||
cvs remove CATAL Makefile calcul.vhdl compteur.vhdl ex0.stim ex1.stim ex2.stim ex3.stim hadamard hadamard.stim hadamard.vhdl hadamard_1.pat hadamard_2.pat hadamard_3.pat hadamard_tb.vhdl ram.vhdl rom.vhdl sequenceur.vhdl
|
|
@ -51,7 +51,8 @@ include $(ALLIANCE_TOP)/etc/libraries.mk
|
|||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
VASY = $(ALLIANCE_TOP)/bin/vasy
|
||||
# VASY = $(ALLIANCE_TOP)/bin/vasy
|
||||
VASY = $(HOME)/dev/bin/SunOS/vasy
|
||||
ASIMUT = $(ALLIANCE_TOP)/bin/asimut
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
|
@ -90,7 +91,7 @@ result_3.pat : hadamard.vst
|
|||
# \------------------------------------------------------------*/
|
||||
|
||||
hadamard.vst : hadamard.vhdl
|
||||
$(ENV_VASY); $(VASY) -a -I vhdl -H hadamard
|
||||
$(ENV_VASY); $(VASY) -a -o -I vhdl -H hadamard
|
||||
|
||||
|
||||
# /*------------------------------------------------------------\
|
|
@ -0,0 +1,5 @@
|
|||
addaccu C
|
||||
multi8_model C
|
||||
srb C
|
||||
controller C
|
||||
sra C
|
|
@ -0,0 +1,257 @@
|
|||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | This file is part of the Alliance CAD System Copyright |
|
||||
# | (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||
# | |
|
||||
# | Home page : http://www-asim.lip6.fr/alliance/ |
|
||||
# | E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||
# | |
|
||||
# | This progam is free software; you can redistribute it |
|
||||
# | and/or modify it under the terms of the GNU General Public |
|
||||
# | License as published by the Free Software Foundation; |
|
||||
# | either version 2 of the License, or (at your option) any |
|
||||
# | later version. |
|
||||
# | |
|
||||
# | Alliance VLSI CAD System 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 more details. |
|
||||
# | |
|
||||
# | You should have received a copy of the GNU General Public |
|
||||
# | License along with the GNU C Library; see the file COPYING. |
|
||||
# | If not, write to the Free Software Foundation, Inc., |
|
||||
# | 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Tool : VASY |
|
||||
# | |
|
||||
# | File : Makefile |
|
||||
# | |
|
||||
# | Author : Jacomme Ludovic |
|
||||
# | |
|
||||
# | Date : 30_05_2000 |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
include $(ALLIANCE_TOP)/etc/$(ALLIANCE_OS).mk
|
||||
include $(ALLIANCE_TOP)/etc/libraries.mk
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Cells |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Binary |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
TOUCH = touch
|
||||
VASY = $(ALLIANCE_TOP)/bin/vasy
|
||||
ASIMUT = $(ALLIANCE_TOP)/bin/asimut
|
||||
BOP = $(ALLIANCE_TOP)/bin/bop
|
||||
SCMAP = $(ALLIANCE_TOP)/bin/scmap
|
||||
PROOF = $(ALLIANCE_TOP)/bin/proof
|
||||
SCR = $(ALLIANCE_TOP)/bin/scr
|
||||
LYNX = $(ALLIANCE_TOP)/bin/lynx
|
||||
LVX = $(ALLIANCE_TOP)/bin/lvx
|
||||
DRUC = $(ALLIANCE_TOP)/bin/druc
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Environement |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
ENV_VASY = MBK_WORK_LIB=.; export MBK_WORK_LIB;\
|
||||
MBK_CATAL_NAME=NO_CATAL; export MBK_CATAL_NAME
|
||||
|
||||
ENV_ASIMUT = MBK_WORK_LIB=.; export MBK_WORK_LIB;\
|
||||
MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME;\
|
||||
MBK_IN_LO=vst; export MBK_IN_LO;\
|
||||
MBK_OUT_LO=vst; export MBK_OUT_LO
|
||||
|
||||
ENV_SIMU_VBE = MBK_CATA_LIB=$(ALLIANCE_TOP)/cells/sxlib; export MBK_CATA_LIB;\
|
||||
MBK_WORK_LIB=.; export MBK_WORK_LIB;\
|
||||
MBK_CATAL_NAME=CATAL_VBE; export MBK_CATAL_NAME;\
|
||||
MBK_IN_LO=vst; export MBK_IN_LO;\
|
||||
MBK_OUT_LO=vst; export MBK_OUT_LO
|
||||
|
||||
ENV_SIMU_VST = MBK_CATA_LIB=$(ALLIANCE_TOP)/cells/sxlib; export MBK_CATA_LIB;\
|
||||
MBK_WORK_LIB=.; export MBK_WORK_LIB;\
|
||||
MBK_CATAL_NAME=NO_CATAL; export MBK_CATAL_NAME;\
|
||||
MBK_IN_LO=vst; export MBK_IN_LO;\
|
||||
MBK_OUT_LO=vst; export MBK_OUT_LO
|
||||
|
||||
ENV_SYNTH = MBK_CATA_LIB=$(ALLIANCE_TOP)/cells/sxlib; export MBK_CATA_LIB;\
|
||||
MBK_TARGET_LIB=$(ALLIANCE_TOP)/cells/sxlib; export MBK_TARGET_LIB;\
|
||||
MBK_WORK_LIB=.; export MBK_WORK_LIB;\
|
||||
MBK_CATAL_NAME=CATAL_VBE; export MBK_CATAL_NAME;\
|
||||
MBK_IN_LO=vst; export MBK_IN_LO;\
|
||||
MBK_OUT_LO=vst; export MBK_OUT_LO
|
||||
|
||||
ENV_ROUTE = MBK_CATA_LIB=$(ALLIANCE_TOP)/cells/sxlib; export MBK_CATA_LIB;\
|
||||
MBK_WORK_LIB=.; export MBK_WORK_LIB;\
|
||||
MBK_CATAL_NAME=NO_CATAL; export MBK_CATAL_NAME;\
|
||||
MBK_IN_PH=ap; export MBK_IN_PH;\
|
||||
MBK_OUT_PH=ap; export MBK_OUT_PH;\
|
||||
MBK_IN_LO=vst; export MBK_IN_LO;\
|
||||
MBK_OUT_LO=al; export MBK_OUT_LO
|
||||
|
||||
ENV_PHYS = MBK_CATA_LIB=$(ALLIANCE_TOP)/cells/sxlib; export MBK_CATA_LIB;\
|
||||
MBK_WORK_LIB=.; export MBK_WORK_LIB;\
|
||||
MBK_CATAL_NAME=NO_CATAL; export MBK_CATAL_NAME;\
|
||||
RDS_TECHNO_NAME=$(ALLIANCE_TOP)/etc/cmos_11.rds; \
|
||||
export RDS_TECHNO_NAME;\
|
||||
RDS_IN=cif; export RDS_IN;\
|
||||
RDS_OUT=cif; export RDS_OUT;\
|
||||
MBK_IN_PH=ap; export MBK_IN_PH;\
|
||||
MBK_OUT_PH=ap; export MBK_OUT_PH;\
|
||||
MBK_IN_LO=al; export MBK_IN_LO;\
|
||||
MBK_OUT_LO=al; export MBK_OUT_LO
|
||||
|
||||
all : multi8_drc
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Vasy |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
multi8.vst : addaccu.vhdl controller.vhdl multi8.vhdl sra.vhdl srb.vhdl
|
||||
$(ENV_VASY); $(VASY) -a -o -I vhdl -HLpV multi8
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Behavioral Simulation |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
result_beh_pat : multi8.vst
|
||||
$(ENV_ASIMUT); $(ASIMUT) multi8 multi8 result_beh
|
||||
$(TOUCH) result_beh_pat
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Boolean Optimization |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
srao_vbe : result_beh_pat
|
||||
$(ENV_SYNTH); $(BOP) -o sra srao
|
||||
$(ENV_SYNTH); $(PROOF) sra srao
|
||||
$(TOUCH) srao_vbe
|
||||
|
||||
srbo_vbe : result_beh_pat
|
||||
$(ENV_SYNTH); $(BOP) -o srb srbo
|
||||
$(ENV_SYNTH); $(PROOF) srb srbo
|
||||
$(TOUCH) srbo_vbe
|
||||
|
||||
addaccuo_vbe : result_beh_pat
|
||||
$(ENV_SYNTH); $(BOP) -o addaccu addaccuo addaccu
|
||||
$(ENV_SYNTH); $(PROOF) addaccu addaccuo
|
||||
$(TOUCH) addaccuo_vbe
|
||||
|
||||
controllero_vbe : result_beh_pat
|
||||
$(ENV_SYNTH); $(BOP) -o controller controllero
|
||||
$(ENV_SYNTH); $(PROOF) controller controllero
|
||||
$(TOUCH) controllero_vbe
|
||||
|
||||
multi8_modelo_vbe : result_beh_pat
|
||||
$(ENV_SYNTH); $(BOP) -o multi8_model multi8_modelo
|
||||
$(ENV_SYNTH); $(PROOF) multi8_model multi8_modelo
|
||||
$(TOUCH) multi8_modelo_vbe
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Mapping |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
sra.vst : srao_vbe
|
||||
$(ENV_SYNTH); $(SCMAP) srao sra
|
||||
|
||||
srb.vst : srbo_vbe
|
||||
$(ENV_SYNTH); $(SCMAP) srbo srb
|
||||
|
||||
addaccu.vst : addaccuo_vbe
|
||||
# $(ENV_SYNTH); $(SCMAP) addaccuo addaccu
|
||||
echo Bug with SCMAP just make a copy
|
||||
cp addaccu.vst.patched addaccu.vst
|
||||
$(TOUCH) addaccu.vst
|
||||
|
||||
controller.vst : controllero_vbe
|
||||
$(ENV_SYNTH); $(SCMAP) controllero controller
|
||||
|
||||
multi8_model.vst : multi8_modelo_vbe
|
||||
$(ENV_SYNTH); $(SCMAP) multi8_modelo multi8_model
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Structural Simulation |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
result_vst_pat : addaccu.vst controller.vst multi8.vst multi8_model.vst \
|
||||
sra.vst srb.vst
|
||||
$(ENV_SIMU_VST); $(ASIMUT) -zd multi8 multi8 result_vst
|
||||
$(TOUCH) result_vst_pat
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Place And Route |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
multi8.ap : result_vst_pat
|
||||
$(ENV_ROUTE); $(SCR) -p -r -i 1000 multi8 multi8
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Extract |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
multi8.al : multi8.ap
|
||||
$(ENV_PHYS); $(LYNX) -v multi8 multi8
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | NetList Comparison |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
multi8_lvx : multi8.al
|
||||
$(ENV_PHYS); $(LVX) vst al multi8 multi8 -f
|
||||
$(TOUCH) multi8_lvx
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Design Rules Check |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
multi8_drc : multi8_lvx
|
||||
$(ENV_PHYS); $(DRUC) multi8
|
||||
$(TOUCH) multi8_drc
|
||||
|
||||
|
||||
|
||||
# /*------------------------------------------------------------\
|
||||
# | |
|
||||
# | Clean |
|
||||
# | |
|
||||
# \------------------------------------------------------------*/
|
||||
|
||||
realclean : clean
|
||||
|
||||
clean :
|
||||
$(RM) -f *vst *vbe result_vst.pat result_beh.pat
|
||||
$(RM) -f result_vst_pat result_beh_pat multi8_drc multi8_lvx
|
||||
$(RM) -f *.al *.ap *.lax *.drc *.cif
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
use IEEE.STD_LOGIC_arith.ALL;
|
||||
use IEEE.STD_LOGIC_unsigned.ALL;
|
||||
|
||||
|
||||
entity AddAccu is
|
||||
|
||||
port ( CLR : in Std_Logic;
|
||||
LD : in Std_Logic;
|
||||
OUTS : in Std_Logic_Vector(15 downto 0) ;
|
||||
CLK : in Std_Logic;
|
||||
|
||||
RESULT : out Std_Logic_Vector(15 downto 0) );
|
||||
|
||||
end AddAccu;
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
architecture DataFlow OF AddAccu is
|
||||
signal resultint : Std_Logic_Vector(15 downto 0) ;
|
||||
begin
|
||||
process (CLK)
|
||||
begin
|
||||
if CLK'event and CLK='0' then
|
||||
if CLR = '1' then resultint <= ( others => '0' );
|
||||
elsif LD = '1' then resultint <= resultint + OUTS;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
RESULT <= resultint;
|
||||
end DataFlow;
|
||||
----------------------------------------------------------------------
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,59 @@
|
|||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.all;
|
||||
|
||||
entity Controller is
|
||||
port (STB, CLK, LSB, Done, RST: in STD_LOGIC;
|
||||
Init, Shift, Add: out STD_LOGIC);
|
||||
end Controller;
|
||||
|
||||
---------------------------------------------------
|
||||
|
||||
architecture FSM of Controller is
|
||||
|
||||
type States is (EndS,InitS, CheckS, AddS, ShiftS);
|
||||
signal State: States ;
|
||||
begin
|
||||
|
||||
-- Drive control outputs based upon State
|
||||
|
||||
Init <= '1' when State = InitS else '0';
|
||||
Add <= '1' when State = AddS else '0';
|
||||
Shift <= '1' when State = ShiftS else '0';
|
||||
|
||||
-- Determine Next State from control inputs
|
||||
|
||||
StateMachine:
|
||||
|
||||
process (CLK)
|
||||
begin
|
||||
--compass stateMachine adj State
|
||||
if CLK'Event and CLK = '0' then
|
||||
if RST = '1' then State <= EndS;
|
||||
else
|
||||
case State is
|
||||
when InitS =>
|
||||
State <= CheckS;
|
||||
when CheckS =>
|
||||
if LSB = '1' then
|
||||
State <= AddS;
|
||||
elsif Done = '0' then
|
||||
State <= ShiftS;
|
||||
else
|
||||
State <= EndS;
|
||||
end if;
|
||||
when AddS =>
|
||||
State <= ShiftS;
|
||||
when ShiftS =>
|
||||
State <= CheckS;
|
||||
when EndS =>
|
||||
if STB = '1' then
|
||||
State <= InitS;
|
||||
end if;
|
||||
end case;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
end FSM;
|
||||
|
||||
---------------------------------------------------
|
|
@ -0,0 +1,16 @@
|
|||
wave CLK
|
||||
wave RST
|
||||
wave STB
|
||||
wave DONE
|
||||
wave -dec A
|
||||
wave -dec B
|
||||
wave -dec RESULT
|
||||
|
||||
force clk 1 50 , 0 100 -repeat 100
|
||||
force RST 1
|
||||
run
|
||||
force RST 0
|
||||
force STB 1
|
||||
force A 10#123
|
||||
force B 10#12
|
||||
run
|
|
@ -0,0 +1,91 @@
|
|||
trace /MULTI8/U3/STATE
|
||||
|
||||
cd MULTI8
|
||||
trace A
|
||||
trace B
|
||||
trace CLK
|
||||
trace RST
|
||||
trace STB
|
||||
trace RESULT
|
||||
trace DONE
|
||||
|
||||
assign ("00000111") A
|
||||
assign ("00000011") B
|
||||
assign ('1') RST
|
||||
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('0') RST
|
||||
assign ('1') STB
|
||||
|
||||
run 50
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
run 50
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
||||
|
||||
assign ('1') CLK
|
||||
run 50
|
||||
assign ('0') CLK
|
||||
run 50
|
|
@ -0,0 +1,51 @@
|
|||
-- input / output list :
|
||||
|
||||
in clk B;;
|
||||
in rst B;;
|
||||
in stb B;;
|
||||
in a (7 downto 0) X;;
|
||||
in b (7 downto 0) X;;
|
||||
out result (15 downto 0) X;;
|
||||
out done B;
|
||||
|
||||
begin
|
||||
|
||||
-- Pattern description :
|
||||
|
||||
-- C R S A B R D
|
||||
-- L S T E O
|
||||
-- K T B S N
|
||||
-- U E
|
||||
-- L
|
||||
-- T
|
||||
|
||||
: 0 1 0 00 00 ?**** ?u;
|
||||
: 1 1 0 00 00 ?**** ?u;
|
||||
: 0 1 0 00 00 ?**** ?u;
|
||||
: 0 0 0 00 00 ?**** ?u;
|
||||
: 0 0 1 00 00 ?**** ?u;
|
||||
: 1 0 1 00 00 ?**** ?u;
|
||||
: 0 0 1 00 00 ?**** ?u;
|
||||
: 0 0 0 02 03 ?**** ?u;
|
||||
: 1 0 0 02 03 ?**** ?u;
|
||||
: 0 0 0 02 03 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0000 ?0;
|
||||
: 1 0 0 00 00 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0000 ?0;
|
||||
: 1 0 0 00 00 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0000 ?0;
|
||||
: 1 0 0 00 00 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0000 ?0;
|
||||
: 1 0 0 00 00 ?0000 ?0;
|
||||
: 0 0 0 00 00 ?0006 ?0;
|
||||
: 0 0 0 00 00 ?0006 ?0;
|
||||
: 1 0 0 00 00 ?0006 ?0;
|
||||
: 0 0 0 00 00 ?0006 ?1;
|
||||
: 0 0 0 00 00 ?0006 ?1;
|
||||
: 1 0 0 00 00 ?0006 ?1;
|
||||
: 0 0 0 00 00 ?0006 ?1;
|
||||
|
||||
end;
|
|
@ -0,0 +1,121 @@
|
|||
-- Date of netlist generation: Dec-6-95
|
||||
----------------------------------------------------------------------
|
||||
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
|
||||
entity Multi8 is
|
||||
|
||||
|
||||
port ( A : in Std_Logic_Vector(7 downto 0) ;
|
||||
B : in Std_Logic_Vector(7 downto 0) ;
|
||||
CLK : in Std_Logic ;
|
||||
RST : in Std_Logic ;
|
||||
STB : in Std_Logic ;
|
||||
|
||||
RESULT : out Std_Logic_Vector(15 downto 0) ;
|
||||
DONE : out Std_Logic );
|
||||
|
||||
end Multi8;
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
architecture Structural OF Multi8 is
|
||||
|
||||
component Controller
|
||||
port ( STB : in Std_Logic;
|
||||
CLK : in Std_Logic;
|
||||
LSB : in Std_Logic;
|
||||
DONE : in Std_Logic;
|
||||
RST : in Std_Logic;
|
||||
|
||||
INIT : out Std_Logic;
|
||||
SHIFT : out Std_Logic;
|
||||
ADD : out Std_Logic );
|
||||
end component;
|
||||
|
||||
component Srb
|
||||
port ( SHIFT : in Std_Logic;
|
||||
LD : in Std_Logic;
|
||||
CLK : in Std_Logic;
|
||||
B : in Std_Logic_Vector(7 downto 0) ;
|
||||
|
||||
OUTS : out Std_Logic_Vector(15 downto 0) );
|
||||
end component;
|
||||
|
||||
component AddAccu
|
||||
port ( CLR : in Std_Logic;
|
||||
LD : in Std_Logic;
|
||||
OUTS : in Std_Logic_Vector(15 downto 0) ;
|
||||
CLK : in Std_Logic;
|
||||
|
||||
RESULT : out Std_Logic_Vector(15 downto 0) );
|
||||
end component;
|
||||
|
||||
component Sra
|
||||
port ( SHIFT : in Std_Logic;
|
||||
LD : in Std_Logic;
|
||||
CLK : in Std_Logic;
|
||||
RST : in Std_Logic;
|
||||
A : in Std_Logic_Vector(7 downto 0) ;
|
||||
|
||||
DONE : out Std_Logic;
|
||||
LSB : out Std_Logic );
|
||||
end component;
|
||||
|
||||
|
||||
signal DONE_local: Std_Logic;
|
||||
signal U1_LSB : Std_Logic;
|
||||
signal U3_INIT : Std_Logic;
|
||||
signal U3_SHIFT : Std_Logic;
|
||||
signal U3_ADD : Std_Logic;
|
||||
signal OUT_INT : Std_Logic_vector(15 downto 0);
|
||||
|
||||
begin
|
||||
|
||||
|
||||
U3: Controller
|
||||
port map ( STB => STB,
|
||||
CLK => CLK,
|
||||
LSB => U1_LSB,
|
||||
DONE => DONE_local,
|
||||
RST => RST,
|
||||
INIT => U3_INIT,
|
||||
SHIFT => U3_SHIFT,
|
||||
ADD => U3_ADD );
|
||||
|
||||
U2: Srb
|
||||
port map ( SHIFT => U3_SHIFT,
|
||||
LD => U3_INIT,
|
||||
CLK => CLK,
|
||||
B => B,
|
||||
OUTS => OUT_INT );
|
||||
|
||||
U5: AddAccu
|
||||
port map ( CLR => U3_INIT,
|
||||
LD => U3_ADD,
|
||||
OUTS => OUT_INT,
|
||||
CLK => CLK,
|
||||
RESULT => RESULT );
|
||||
|
||||
U1: Sra
|
||||
port map ( SHIFT => U3_SHIFT,
|
||||
LD => U3_INIT,
|
||||
RST => RST,
|
||||
CLK => CLK,
|
||||
A => A,
|
||||
DONE => DONE_local,
|
||||
LSB => U1_LSB );
|
||||
|
||||
DONE <= DONE_local;
|
||||
|
||||
end Structural;
|
||||
|
||||
configuration CFG_Multi8 of Multi8 is
|
||||
for Structural
|
||||
|
||||
end for;
|
||||
end CFG_Multi8;
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
|
@ -0,0 +1,67 @@
|
|||
|
||||
in clk B;;
|
||||
in rst B;;
|
||||
in stb B;;
|
||||
in A (7 downto 0) X;;
|
||||
in B (7 downto 0) X;;
|
||||
out result (15 downto 0) X;;
|
||||
out done B;
|
||||
|
||||
register u3.state(0 to 2) X;;
|
||||
register u1.outsint(7 downto 0) X;;
|
||||
|
||||
begin
|
||||
|
||||
-- PATTERN DESCRIPTION :
|
||||
|
||||
: 0 1 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 1 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 1 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 1 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 1 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 1 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 02 03 ?**** ?* ?* ?**;
|
||||
: 1 0 0 02 03 ?**** ?* ?* ?**;
|
||||
: 0 0 0 02 03 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 1 0 0 00 00 ?**** ?* ?* ?**;
|
||||
: 0 0 0 00 00 ?**** ?* ?* ?**;
|
||||
|
||||
end;
|
|
@ -0,0 +1,55 @@
|
|||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
use IEEE.STD_LOGIC_arith.ALL;
|
||||
use IEEE.STD_LOGIC_unsigned.ALL;
|
||||
|
||||
entity Sra is
|
||||
|
||||
port ( Shift : in Std_Logic ;
|
||||
LD : in Std_Logic ;
|
||||
RST : in Std_Logic;
|
||||
CLK : in Std_Logic ;
|
||||
A : in Std_Logic_Vector(7 downto 0);
|
||||
|
||||
Done : out Std_Logic ;
|
||||
LSB : out Std_Logic );
|
||||
|
||||
end Sra;
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
architecture DataFlow OF Sra is
|
||||
|
||||
signal outsint : Std_Logic_Vector(7 downto 0);
|
||||
begin
|
||||
process (CLK)
|
||||
begin
|
||||
if CLK'event and CLK='0' then
|
||||
if RST ='1' then outsint <= (others => '0');
|
||||
elsif LD = '1' then outsint <= A ;
|
||||
elsif Shift= '1' then
|
||||
outsint(7 downto 0) <= '0' & outsint(7 downto 1);
|
||||
else outsint <= outsint;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
process( outsint )
|
||||
variable RESULT : Std_Logic;
|
||||
begin
|
||||
RESULT := '0';
|
||||
for j in outsint'range loop
|
||||
RESULT := outsint(j) or RESULT;
|
||||
exit when RESULT = '1';
|
||||
end loop;
|
||||
RESULT := not(RESULT);
|
||||
|
||||
Done <= RESULT;
|
||||
end process;
|
||||
LSB <= outsint(0);
|
||||
|
||||
end DataFlow;
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
|
@ -0,0 +1,41 @@
|
|||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
use IEEE.STD_LOGIC_arith.ALL;
|
||||
use IEEE.STD_LOGIC_unsigned.ALL;
|
||||
|
||||
entity Srb is
|
||||
|
||||
port ( Shift : in Std_Logic ;
|
||||
LD : in Std_Logic ;
|
||||
CLK : in Std_Logic ;
|
||||
B : in Std_Logic_Vector(7 downto 0);
|
||||
|
||||
OUTS : out Std_Logic_Vector(15 downto 0));
|
||||
|
||||
end Srb;
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
architecture DataFlow OF Srb is
|
||||
signal outsint : Std_Logic_Vector(15 downto 0);
|
||||
|
||||
begin
|
||||
process (CLK)
|
||||
begin
|
||||
if CLK'event and CLK='0' then
|
||||
if LD = '1' then outsint <=
|
||||
B(7)&B(7)&B(7)&B(7)&B(7)&B(7)&B(7)&B(7)&B ;
|
||||
elsif Shift= '1' then
|
||||
outsint(15 downto 0) <= outsint(14 downto 0) & '0';
|
||||
else outsint <= outsint;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
OUTS <= outsint;
|
||||
|
||||
end DataFlow;
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
Loading…
Reference in New Issue