URL
https://opencores.org/ocsvn/nanoblaze/nanoblaze/trunk
Subversion Repositories nanoblaze
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 3 to Rev 4
- ↔ Reverse comparison
Rev 3 → Rev 4
/nanoblaze/trunk/Circuit/nanoblaze.vhd
0,0 → 1,157
--############################################################################## |
-- |
-- nanoblaze |
-- Top view of the NanoBlaze processor |
-- |
-- The processor is compatible with the Xilinx PicoBlaze |
-- <http://www.picoblaze.info>, but different bit widths can be adapted |
-- in order to have a larger processor. |
-- |
-------------------------------------------------------------------------------- |
-- |
-- Versions / Authors |
-- 1.0 Francois Corthay first implementation |
-- |
-- Provided under GNU LGPL licence: <http://www.gnu.org/copyleft/lesser.html> |
-- |
-- by the electronics group of "HES-SO//Valais Wallis", in Switzerland: |
-- <http://www.hevs.ch/en/rad-instituts/institut-systemes-industriels/>. |
-- |
-------------------------------------------------------------------------------- |
-- |
-- Usage |
-- Set the proper values for all generics. |
-- |
-- Edit an assembler file and compile it as the architecture of "programRom". |
-- |
-- The "reset" signal is active high. |
-- |
-------------------------------------------------------------------------------- |
-- |
-- Synthesis results |
-- A circuit compatible with the PicoBlaze sizes gives the following |
-- synthesis result on a Xilinx Spartan3-1000: |
-- Number of Slice Flip Flops: 157 out of 15,360 1% |
-- Number of 4 input LUTs: 446 out of 15,360 2% |
-- Number of BRAMs: 1 out of 24 4% |
-- |
--############################################################################## |
|
LIBRARY ieee; |
USE ieee.std_logic_1164.all; |
USE ieee.numeric_std.all; |
|
ENTITY nanoBlaze IS |
GENERIC( |
addressBitNb : positive := 8; |
registerBitNb : positive := 8; |
programCounterBitNb : positive := 10; |
stackPointerBitNb : positive := 5; |
registerAddressBitNb : positive := 4; |
scratchpadAddressBitNb : natural := 6 |
); |
PORT( |
reset : IN std_ulogic; |
clock : IN std_ulogic; |
en : IN std_ulogic; |
dataAddress : OUT unsigned(addressBitNb-1 DOWNTO 0); |
dataOut : OUT std_ulogic_vector(registerBitNb-1 DOWNTO 0); |
dataIn : IN std_ulogic_vector(registerBitNb-1 DOWNTO 0); |
readStrobe : OUT std_uLogic; |
writeStrobe : OUT std_uLogic; |
int : IN std_uLogic; |
intAck : OUT std_ulogic |
); |
END nanoBlaze ; |
|
--============================================================================== |
|
ARCHITECTURE struct OF nanoBlaze IS |
|
constant instructionBitNb: positive := 18; |
SIGNAL instruction : std_ulogic_vector(instructionBitNb-1 DOWNTO 0); |
SIGNAL logic1 : std_ulogic; |
SIGNAL programCounter : unsigned(programCounterBitNb-1 DOWNTO 0); |
|
COMPONENT nanoProcessor |
GENERIC ( |
addressBitNb : positive := 8; |
registerBitNb : positive := 8; |
registerAddressBitNb : positive := 4; |
programCounterBitNb : positive := 10; |
stackPointerBitNb : positive := 5; |
instructionBitNb : positive := 18; |
scratchpadAddressBitNb : natural := 4 |
); |
PORT ( |
reset : IN std_uLogic; |
clock : IN std_uLogic; |
en : IN std_uLogic; |
progCounter : OUT unsigned(programCounterBitNb-1 DOWNTO 0); |
instruction : IN std_ulogic_vector(instructionBitNb-1 DOWNTO 0); |
dataAddress : OUT unsigned(addressBitNb-1 DOWNTO 0); |
dataOut : OUT std_ulogic_vector(registerBitNb-1 DOWNTO 0); |
dataIn : IN std_ulogic_vector(registerBitNb-1 DOWNTO 0); |
readStrobe : OUT std_uLogic; |
writeStrobe : OUT std_uLogic; |
int : IN std_uLogic; |
intAck : OUT std_ulogic |
); |
END COMPONENT; |
|
COMPONENT programRom |
GENERIC ( |
addressBitNb : positive := 8; |
dataBitNb : positive := 8 |
); |
PORT ( |
reset : IN std_uLogic; |
clock : IN std_uLogic; |
en : IN std_uLogic; |
address : IN unsigned(addressBitNb-1 DOWNTO 0); |
dataOut : OUT std_ulogic_vector(dataBitNb-1 DOWNTO 0) |
); |
END COMPONENT; |
|
BEGIN |
logic1 <= '1'; |
|
I_up : nanoProcessor |
GENERIC MAP ( |
addressBitNb => addressBitNb, |
registerBitNb => registerBitNb, |
registerAddressBitNb => registerAddressBitNb, |
programCounterBitNb => programCounterBitNb, |
stackPointerBitNb => stackPointerBitNb, |
instructionBitNb => instructionBitNb, |
scratchpadAddressBitNb => scratchpadAddressBitNb |
) |
PORT MAP ( |
reset => reset, |
clock => clock, |
en => en, |
progCounter => programCounter, |
instruction => instruction, |
dataAddress => dataAddress, |
dataOut => dataOut, |
dataIn => dataIn, |
readStrobe => readStrobe, |
writeStrobe => writeStrobe, |
int => int, |
intAck => intAck |
); |
|
I_rom : programRom |
GENERIC MAP ( |
addressBitNb => programCounterBitNb, |
dataBitNb => instructionBitNb |
) |
PORT MAP ( |
reset => reset, |
clock => clock, |
en => logic1, |
address => programCounter, |
dataOut => instruction |
); |
|
END ARCHITECTURE struct; |
nanoblaze/trunk/Circuit/nanoblaze.vhd
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property