# 16 bit computer demo **Repository Path**: brianbot/16-bit-computer-demo ## Basic Information - **Project Name**: 16 bit computer demo - **Description**: Demonstration of 16 Bit Computer - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-02-09 - **Last Updated**: 2024-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Demonstrate 16 Bit Computer ### *软件部分:实现了面向对象语言编译器,虚拟机结构,以及如何把面向对象语言编译成虚拟机语言,再把虚拟机语言转换成Hack汇编,最后将Hack汇编转换成二进制的Hack-CPU指令。 ### *硬件部分:实现了从AND,OR,NOT等基础逻辑门电路组成ALU,BIT组成PC,RAM等,再一步一步组成HACK-CPU,HACK-Computer。 ### 基于FPGA(开源软硬件)实现16位计算机以及其编译工具: # [实现源码](https://gitee.com/brianbot/fpga-nand2tetris-my-implementation) ### 硬件: AND OR NOT:基础逻辑门 ALU:算术逻辑单元 HACK-CPU:中央处理器 HACK-COMPUTER: 冯诺依曼架构计算机 ### 软件: Jack Compiler:类JAVA面向对象语言编译器,将Jack语言转成栈虚拟机代码 VM Translator:栈虚拟机转换器,将虚拟机码转成HACK-CPU汇编码 Hack Assembler:Hack汇编器,将汇编码转成二进制HACK-CPU指令 ### 简易程序 GIF shows Counter program run on Hack Computer build in FPGA development board. (GIF 展示计数器程序运行在Hack计算机里,该计算机在FPGA开发板里构建) ![输入图片说明](Capture/Hardware/Counter%20-small-original.gif) The Jack Code: ![输入图片说明](Capture/Hardware/Counter_jack.PNG) ### 驱动TFT 2.8inch LCD(ILI9341 Controller)程序 Image shows graphics program run on Hack Computer by Driving LCD Device. (图片 展示图形程序运行在Hack计算机里) ![输入图片说明](Capture/Hardware/Hack6.PNG) ![输入图片说明](Capture/Hardware/LCD_test.PNG) ![输入图片说明](Capture/Software/test.jpg) The Jack Code: ![输入图片说明](Capture/Software/te.PNG) ![输入图片说明](Capture/Software/screenTest1.jpg) The Screen Test program run on Hack Computer which build on iCE40HX1K-EVB: ![输入图片说明](Capture/Software/screen.jpg) The ASCII code: ![输入图片说明](Capture/Software/ascii.jpg) ### Hardware Implementation Base Logic Gates AND Gate ![输入图片说明](Capture/Hardware/And.PNG) ![输入图片说明](Capture/Hardware/And_tb.PNG) XOR Gate ![输入图片说明](Capture/Hardware/Xor.PNG) ![输入图片说明](Capture/Hardware/Xor_design.PNG) # # ### Hack Computer Modules (Verilog Implementation) Verilog语言实现计算机模块: # # ![输入图片说明](Capture/Hardware/FPGA_ROM.PNG) ![输入图片说明](Capture/Hardware/FPGA_RAM.PNG) ![输入图片说明](Capture/Hardware/FPAG_MEM.PNG) ![输入图片说明](Capture/Hardware/CPU.PNG) ![输入图片说明](Capture/Hardware/FPGA_CPU.PNG) ![输入图片说明](Capture/Hardware/FPGA_HACK.PNG) # # ![输入图片说明](Capture/Hardware/FPGA_HACK_DESIGN.PNG ) ![输入图片说明](Capture/Hardware/gaowin.PNG) ### Software Implementation Compilation ToolChain(编译工具链的实现): #Compiler: Compile Jack Code to VM Code. # # ![输入图片说明](Capture/Software/Compiler.PNG) #Jack Code Sample: ![输入图片说明](Capture/Software/Echo-Char-Jack.PNG) # #VM Translator: Translate VM Code to ASM. # # ![输入图片说明](Capture/Software/VM%20Translator.PNG) #VM Code Sample: ![输入图片说明](Capture/Software/Echo-Char-vm.PNG) # #Assembler:Translate ASM to Binary Code.# # ![输入图片说明](Capture/Software/Assembler.PNG) #Hack(Binary) Code Sample: ![输入图片说明](Capture/Software/Echo-Char-Hack.PNG) # ### Communication with PC via UART(通过串口与PC通信): ![输入图片说明](Capture/Software/Echo-char.PNG) ![输入图片说明](Capture/Software/StdIO.PNG) ![输入图片说明](Capture/Software/Echo-String.PNG) # [实现源码](https://gitee.com/brianbot/fpga-nand2tetris-my-implementation) ### 引用: Michael Schröder: [Visit nand2tetris-fpga](https://gitlab.com/x653/nand2tetris-fpga/-/tree/master/) to learn FPGA and Hardware controll. Noam Nisan and Shimon Schocken: [Visit nand2tetris](https://nand2tetris.org/) and learn to build a modern general-purpose computer system. Olimex Ltd: Buy your hardware from the Company with highest number of registered OSHW projects :)