Difference between revisions of "Embed IOP16"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
* This is a guide to embedding the IOP16 into another design | * This is a guide to embedding the IOP16 into another design | ||
+ | * This is not the same as [[Extend_IOP16_minimal_example|Extending IOP16 minimal example]] | ||
+ | * This guide requires general familiarity with [[IOP16_16-bit_I/O_CPU_Design|IOP16 16-bit I/O CPU Design]] | ||
= Examples of Embedded IOP16 = | = Examples of Embedded IOP16 = | ||
* Working examples | * Working examples | ||
− | ** ANSI Terminal example | + | ** [https://github.com/douggilliland/Retro-Computers/tree/master/PDP-8/PDP8_OpenCores/RETRO-EP4CE15_CYCLONE_IV_VDU PDP-8 with ANSI Terminal example] |
− | ** Front Panel Example | + | ** [https://github.com/douggilliland/MultiComp/tree/master/MultiComp_On_RETRO-EP4CE15/M6800_MIKBUG_FrontPanel01 M6800 CPU with Front Panel Example] |
− | == PDP-8 Example == | + | == PDP-8 with ANSI Terminal Example == |
* Embeds [https://github.com/douggilliland/Retro-Computers/tree/master/PDP-8/PDP8_OpenCores/RETRO-EP4CE15_CYCLONE_IV_VDU/ANSITerm ANSITerm] to [https://github.com/douggilliland/Retro-Computers/tree/master/PDP-8/PDP8_OpenCores/RETRO-EP4CE15_CYCLONE_IV_VDU PDP-8] | * Embeds [https://github.com/douggilliland/Retro-Computers/tree/master/PDP-8/PDP8_OpenCores/RETRO-EP4CE15_CYCLONE_IV_VDU/ANSITerm ANSITerm] to [https://github.com/douggilliland/Retro-Computers/tree/master/PDP-8/PDP8_OpenCores/RETRO-EP4CE15_CYCLONE_IV_VDU PDP-8] | ||
Line 16: | Line 18: | ||
* Connections through Serial Tx/Rx lines to existing design | * Connections through Serial Tx/Rx lines to existing design | ||
− | == 8-bit CPU Front Panel Example == | + | == 8-bit CPU with Front Panel Example == |
* [https://github.com/douggilliland/MultiComp/tree/master/MultiComp_On_RETRO-EP4CE15/M6800_MIKBUG_FrontPanel01 M6800 Front Panel Build] | * [https://github.com/douggilliland/MultiComp/tree/master/MultiComp_On_RETRO-EP4CE15/M6800_MIKBUG_FrontPanel01 M6800 Front Panel Build] |
Latest revision as of 17:21, 11 April 2022
Contents
Overview
- This is a guide to embedding the IOP16 into another design
- This is not the same as Extending IOP16 minimal example
- This guide requires general familiarity with IOP16 16-bit I/O CPU Design
Examples of Embedded IOP16
- Working examples
PDP-8 with ANSI Terminal Example
- Embeds ANSITerm to PDP-8
- Reads keyboard and writes to UART (connected at the higher level to PDP-8)
- Reads UART (connected at the higher level to PDP-8) and writes to the screen
- Connections through Serial Tx/Rx lines to existing design
8-bit CPU with Front Panel Example
- M6800 Front Panel Build
- M6800 CPU
- 32KB internal SRAM
- MIKBUG ROM
- Uses Front Panel For 8 Bit Computers to read/write Dual Ported CPU memory
- Performs low-level I2C communications with Front Panel
- Controle CPU Run/Halt state
CPU Entity
- The CPU entity has the minimal connection needed to use the CPU in an embedded application
- Copy/paste the CPU entity into the next higher-level VDHL file
-- IOP16 Peripheral bus signal w_periphAdr : std_logic_vector(7 downto 0); signal w_peripDataToCPU : std_logic_vector(7 downto 0); signal w_peripDataFromCPU : std_logic_vector(7 downto 0); signal w_periphWr : std_logic; signal w_periphRd : std_logic; CPU : ENTITY work.cpu_001 generic map ( INST_ROM_SIZE_PASS => 512, -- Instruction ROM size STACK_DEPTH_PASS => 4 -- JSR/RTS nesting depth - Stack size 2^n - n (4-12 locations) ) PORT map ( i_clock => i_clock, -- 50 MHz clock i_resetN => w_resetClean_n, -- Reset CPU active low i_peripDataToCPU => w_peripDataToCPU, -- Data from the Peripherals to the CPU -- Peripheral bus o_peripAddr => w_peripAddr, -- Peripheral address bus (256 I/O locations) o_peripDataFromCPU => w_peripDataFromCPU, -- Data from CPU to Peripherals o_peripWr => w_peripWr, -- Write strobe o_peripRd => w_peripRd -- Read strobe );
CPU Entity
- Two generics can be modified
- INST_ROM_SIZE_PASS - Instruction ROM size
- Legal sizes are 512W, 1KW, 2KW, 4KW
- 512W uses 1 of 1K Blocks in EP4CE15 FPGA
- Should match ROM application size
- Legal sizes are 512W, 1KW, 2KW, 4KW
- STACK_DEPTH_PASS - JSR/RTS nesting depth - Stack size 2^n - n (4-12 locations)
- Legal sizes
- 0 - None
- 1 - Single deep - Doesn't need SRAM
- 2, 3, 4 - Needs SRAM
- Legal sizes
- INST_ROM_SIZE_PASS - Instruction ROM size
IOP16 CPU Resources
- Logic Cells: 271
- Registers: 76
- Memory bits: 8192 (512W)
Example Applications
Connect to High Level
- Peripheral elements are linked to the Peripheral address, data busses and strobes