Difference between revisions of "IOP16 Constants Unit"

From Land Boards Wiki
Jump to navigation Jump to search
Line 14: Line 14:
  
 
* Single address from the IOP Peripheral spave
 
* Single address from the IOP Peripheral spave
* Load start address (W)
+
* Load transfer start address (W)
 
* Read Data (R)
 
* Read Data (R)
  

Revision as of 22:42, 14 April 2022

Constants ROM with Address Counter

A Constants ROM can be used to store strings. This is useful for printing strings to the VDU and UART.

  • Constants ROM
    • 256-byte (max)
    • Null-terminated strings
    • ROM "assembler" creates .MIF file and Symbol table
  • 8-bit Address Counter
    • Loadable with start address
    • Auto-increment address

Programming

  • Single address from the IOP Peripheral spave
  • Load transfer start address (W)
  • Read Data (R)

Hook-up

  • Add to Top Level VHDL code

Pins

  • None - all internal

Signals

-- Decodes/Strobes
...
  signal w_ldConAdr				:	std_logic;
  signal w_rdConAdr				:	std_logic;
...
-- Interfaces
...
signal w_ConstsData			:	std_logic_vector(7 downto 0);

VHDL Instance

  • Code to add UART to the IOP16 top file
-- Constants Unit
CONST_UNIT : entity work.ConstantsUnit
port map (	
  i_clock     => i_clk,
  i_dataIn    => w_periphOut,
  i_ldStr     => w_ldConAdr,
  i_rdStr     => w_rdConAdr,
  o_constData => w_ConstsData
);

Hook-up Strobes/Read Mux

  • Strobes
-- Add Strobes/Selects
..
  w_ldConAdr <= '1' when (w_periphAdr=x"0E") and (w_periphWr = '1')	else '0';
  w_rdConAdr <= '1' when (w_periphAdr=x"0E") and  (w_periphRd = '1')	else '0';
...
  • Add to Read Mux
-- Peripheral bus read mux
  w_periphIn <=	...
    w_ConstsData when w_periphAdr = x"0E" else -- Read Constants ROM
...

Constants Compiler

  • Program - pyConstants_cpu_001.py
    • Python 3
    • Prompts for input file
  • Creates two output files
    • Cross reference list of LABEL, address
    • .MIF file with ROM contents
      • Load ROM file by double-clickjng ConstantsROM_256B below ConstantsUnit
  • Input file is CSV
    • Header line - ['LABEL','STRING']

Resources

  • Logic Cells: 74
  • Registers: 46
  • Memory Bits: 2048
  • M9Ks: 1