Skip to content

mkayaalp/computer-organization-logisim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Computer Organization with Logisim

Logisim designs for teaching computer organization.

© 2021 Mehmet Kayaalp.

Cite as:

Mehmet Kayaalp. 2021. Using Logisim-evolution for Teaching Datapath and Control. In Proceedings of WCAE ’21: Workshop on Computer Architecture Education (WCAE ’21). ACM, New York, NY, USA, 8 pages.

See mkayaalp.net/computer-organization-logisim for details.

Execution of instructions in Logisim circuit

The circuit files in this repository:

  • Logic design review examples
  • Combinational vs. pipelined multiplier
  • Incrementally building a Stored Program computer
  • Converting the design into ARMv8
  • Physical lab
    • LED Blink circuit: led_blink.circ
      • Improved ARMv8 datapath with subcircuits
      • Added LED outputs and subcircuit layouts for easy debugging
      • Added instructions: bl, cbnz, ldur (word), stur (word), lsl, lsr
      • Added PC resetting to 0080_0000 (the program starting address for Raspberry Pi 3)
      • Added a memory controller with peripheral addresses starting at 3F00_0000 (matching Raspberry Pi 3)
      • Added a GPIO peripheral at address 3F20_0000 (matching BCM2837 of Raspberry Pi 3)
      • Added BCM2837 GPIO registers: GPFSELn, GPSETn, GPCLRn
    • Datapath improvements: added_sp_br_flags_adds_subs_ands_bcond.circ
      • Added proper handling of SP register
      • Added flags register used in conditional branching
      • Added flag-setting variants: adds, subs, ands
      • Added indirect branch instruction: br
      • Added flag-based conditional branch instructions: b.cond
    • More instructions: added_imms_mul_div_accesssize_varshift.circ
      • Added logical immediate encoding
      • Added wide-immediate instructions: movz, movk, movn
      • Added variable logical shift: lslv, lsrv
      • Added multiplication and division: mul, umulh, smulh, udiv, sdiv
      • Added half-word- and byte-sized memory access: ldurh, sturh, ldurb, sturb
    • LCD display: added_lcd_display.circ
      • Added PC-relative address instruction: adr
      • Added an I2C peripheral (send-only) at address 3F80_4000 (matching BSC1 of BCM2837 of Raspberry Pi 3)
      • Added BCM2837 BSC registers: C, S, DLEN, ADDR, FIFO_DATA
      • Added an I2C device (receive-only) (matching the PCF8574 on the LCD backpack)
      • Added an HD44780 module with a character matrix LCD display
  • Pipelined LEGv8 datapath with forwarding unit (no hazard detection or stalling): pipeline.circ

About

Logisim designs for teaching computer organization. https://mkayaalp.net/computer-organization-logisim

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published