Difference between revisions of "Simple SoC"
From Hackerspace.gr
(10 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
We'll merely keep a meetup log and notes here, important stuff will be stored in One Single Repo (tm), next to the code :) | We'll merely keep a meetup log and notes here, important stuff will be stored in One Single Repo (tm), next to the code :) | ||
− | |||
− | + | (Final?) working implementation, with VGA output and debugger | |
− | + | https://www.youtube.com/watch?v=YfNVco7CpEU | |
− | + | ||
+ | == Meetup Log == | ||
− | === | + | ==== [[PLD_Workshop_11_09_2013|2013/09/11 - September reunion]] ==== |
+ | * Discuss and improve specs a bit | ||
+ | * Update documentation and C# ref. implementation | ||
+ | * forked from [[Programmable Logic Lessons]] to [[Simple SoC]] | ||
− | ==== [[ | + | ==== [[PLD_Workshop_18_09_2013|2013/09/18 - Let there be code]] ==== |
− | * | + | * Debugged & Finished sdlcore implementation |
+ | ==== [[PLD_Workshop_2013/09/25|2013/09/25 - Verilog at last]] ==== | ||
+ | * Spec now has vsync | ||
+ | * Reviewed sdlcore code | ||
+ | * Hacked together some very basic Verilog | ||
− | ==== [[ | + | ==== [[PLD_Workshop_2013/10/02|2013/10/02 - Howdy Simulator]] ==== |
− | * | + | * Implemented ram |
− | * | + | * Added delays for ram |
− | ==== [[PLD_Workshop_2013/ | + | ==== [[PLD_Workshop_2013/10/09|2013/10/09 - Howdy Simulator, for real]] ==== |
− | * * | + | * debug, debug, debug, and simulate |
− | * | + | * Implemented more state logic |
+ | * cpu mostly works, needs some more opcodes! | ||
− | ==== [[PLD_Workshop_2013/ | + | ==== [[PLD_Workshop_2013/10/16|2013/10/16 - How about conditions?]] ==== |
− | * | + | * Implemented beq, bga, bgt, jr, draw, fixed write16, read16 |
− | * | + | * wired up vram (resized to 2bpp because it doesn't fit) |
− | * | + | * added vga output, but it is glitched/buggy |
+ | |||
+ | ==== [[PLD_Workshop_2013/10/23|2013/10/23 - We love glitches]] ==== | ||
+ | * Fixed VGA, centered image, still outputs corrupted data though | ||
+ | * vram resized to 256x256x3 in order to fit | ||
==== [[PLD_Workshop_2013/10/30|2013/10/30 - Corrupted Pixels]] ==== | ==== [[PLD_Workshop_2013/10/30|2013/10/30 - Corrupted Pixels]] ==== | ||
Line 41: | Line 52: | ||
* implemented wait | * implemented wait | ||
− | ==== [[PLD_Workshop_2013/ | + | ==== [[PLD_Workshop_2013/11/06|2013/11/13 - Differential debugging]] ==== |
− | * | + | * Investigate serial communications |
− | * | + | * Try out UART sample |
+ | * draft out ICE spec | ||
− | ==== [[PLD_Workshop_2013/ | + | ==== [[PLD_Workshop_2013/11/20|2013/11/20 - Want some ICE?]] ==== |
− | * | + | * *almost* implemented the UART |
− | * | + | * We have some pin collisions on clock vs dcm vs io-standards per ban |
− | * | + | |
− | ==== [[ | + | ==== [[PLD_Workshop_2.10|2013/12/04 - Clocks and IO]] ==== |
− | * | + | * Worked around the IO/DCM issues |
− | + | * WIP on the ICE implementation | |
− | * | + | |
− | ==== [[ | + | ==== [[PLD_Workshop_2.11|2013/12/11 - Debuggable Hardware]] ==== |
− | * | + | * Work on the ICE implementation |
− | + | ||
− | ==== [[ | + | ==== [[PLD_Workshop_2.12|2014/01/22 - ICEful modules]] ==== |
− | * | + | * Modularization, refactoring |
− | + | ||
− | + | ||
− | ==== [[ | + | ==== [[PLD_Workshop_2.13|2014/01/29 - Making it work once more]] ==== |
− | * | + | * Get the modularised code back into working state |
+ | * implement some of the ICE state machine | ||
− | ==== [[ | + | ==== [[PLD_Workshop_2.14|2014/02/05 - Debugger Integration]] ==== |
− | * | + | * implement some of the ICE state machine |
− | * | + | * have it talk nicely with the debugger |
− | * | + | * -> We got VGA writes working! |
+ | |||
+ | ==== [[PLD_Workshop_2.15|2014/02/26 - Wait States]] ==== | ||
+ | * Add wait states for ICE & module integration on the cpu | ||
+ | * have it talk nicely with the debugger | ||
== Resources == | == Resources == | ||
Line 76: | Line 88: | ||
** Direct links, [https://github.com/pld-lessons/slides slides], [https://github.com/pld-lessons/vga_out vga_out verilog example], [https://github.com/pld-lessons/simple_cpu a simple cpu in C] | ** Direct links, [https://github.com/pld-lessons/slides slides], [https://github.com/pld-lessons/vga_out vga_out verilog example], [https://github.com/pld-lessons/simple_cpu a simple cpu in C] | ||
* Your favorite search engine | * Your favorite search engine | ||
+ | |||
+ | [[Category:Projects]] |
Latest revision as of 01:15, 13 June 2018
Contents
- 1 Description
- 2 Meetup Log
- 2.1 2013/09/11 - September reunion
- 2.2 2013/09/18 - Let there be code
- 2.3 2013/09/25 - Verilog at last
- 2.4 2013/10/02 - Howdy Simulator
- 2.5 2013/10/09 - Howdy Simulator, for real
- 2.6 2013/10/16 - How about conditions?
- 2.7 2013/10/23 - We love glitches
- 2.8 2013/10/30 - Corrupted Pixels
- 2.9 2013/11/13 - Differential debugging
- 2.10 2013/11/20 - Want some ICE?
- 2.11 2013/12/04 - Clocks and IO
- 2.12 2013/12/11 - Debuggable Hardware
- 2.13 2014/01/22 - ICEful modules
- 2.14 2014/01/29 - Making it work once more
- 2.15 2014/02/05 - Debugger Integration
- 2.16 2014/02/26 - Wait States
- 3 Resources
Description
A very basic, custom SoC softcore
Primary git repo: on github
Specs/Design: on github as well
We'll merely keep a meetup log and notes here, important stuff will be stored in One Single Repo (tm), next to the code :)
(Final?) working implementation, with VGA output and debugger
https://www.youtube.com/watch?v=YfNVco7CpEU
Meetup Log
2013/09/11 - September reunion
- Discuss and improve specs a bit
- Update documentation and C# ref. implementation
- forked from Programmable Logic Lessons to Simple SoC
2013/09/18 - Let there be code
- Debugged & Finished sdlcore implementation
2013/09/25 - Verilog at last
- Spec now has vsync
- Reviewed sdlcore code
- Hacked together some very basic Verilog
2013/10/02 - Howdy Simulator
- Implemented ram
- Added delays for ram
2013/10/09 - Howdy Simulator, for real
- debug, debug, debug, and simulate
- Implemented more state logic
- cpu mostly works, needs some more opcodes!
2013/10/16 - How about conditions?
- Implemented beq, bga, bgt, jr, draw, fixed write16, read16
- wired up vram (resized to 2bpp because it doesn't fit)
- added vga output, but it is glitched/buggy
2013/10/23 - We love glitches
- Fixed VGA, centered image, still outputs corrupted data though
- vram resized to 256x256x3 in order to fit
2013/10/30 - Corrupted Pixels
- Had no luck actually locating the vga corruption bug
- simulator results and simpler test cases seem to work fine
- implemented wait
2013/11/13 - Differential debugging
- Investigate serial communications
- Try out UART sample
- draft out ICE spec
2013/11/20 - Want some ICE?
- *almost* implemented the UART
- We have some pin collisions on clock vs dcm vs io-standards per ban
2013/12/04 - Clocks and IO
- Worked around the IO/DCM issues
- WIP on the ICE implementation
2013/12/11 - Debuggable Hardware
- Work on the ICE implementation
2014/01/22 - ICEful modules
- Modularization, refactoring
2014/01/29 - Making it work once more
- Get the modularised code back into working state
- implement some of the ICE state machine
2014/02/05 - Debugger Integration
- implement some of the ICE state machine
- have it talk nicely with the debugger
- -> We got VGA writes working!
2014/02/26 - Wait States
- Add wait states for ICE & module integration on the cpu
- have it talk nicely with the debugger
Resources
- The material from Programmable Logic Lessons
- Direct links, slides, vga_out verilog example, a simple cpu in C
- Your favorite search engine