Giter VIP home page Giter VIP logo

computer-organization-logisim's Introduction

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

computer-organization-logisim's People

Contributors

mkayaalp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.