{"id":20816534,"url":"https://github.com/icarogabryel/moon-iv","last_synced_at":"2026-03-15T12:13:18.861Z","repository":{"id":181478430,"uuid":"600472483","full_name":"icarogabryel/moon-iv","owner":"icarogabryel","description":"16 Bit, multicore, unicycle processor for general purpose simulated in VHDL.  Created as a tool for teaching computer architecture at Federal University of Piauí.","archived":false,"fork":false,"pushed_at":"2024-09-08T21:44:04.000Z","size":3780,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T05:41:18.765Z","etag":null,"topics":["16-bit","architecture","computer-architecture","computer-organization","hardware","hardware-simulation","harvard-architecture","simulation","teaching","vhdl"],"latest_commit_sha":null,"homepage":"","language":"VHDL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icarogabryel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-11T15:51:23.000Z","updated_at":"2024-09-08T21:44:08.000Z","dependencies_parsed_at":"2024-01-01T00:37:04.886Z","dependency_job_id":"90360f65-b579-4e51-981a-48a00d9caf68","html_url":"https://github.com/icarogabryel/moon-iv","commit_stats":null,"previous_names":["icarogby/cometa16","icarogby/cometa-mark-ii","icarogby/cmt2-communication-subsystem","icarogabryel/moon-iv"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/icarogabryel/moon-iv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icarogabryel%2Fmoon-iv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icarogabryel%2Fmoon-iv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icarogabryel%2Fmoon-iv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icarogabryel%2Fmoon-iv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icarogabryel","download_url":"https://codeload.github.com/icarogabryel/moon-iv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icarogabryel%2Fmoon-iv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28002335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["16-bit","architecture","computer-architecture","computer-organization","hardware","hardware-simulation","harvard-architecture","simulation","teaching","vhdl"],"created_at":"2024-11-17T21:34:51.881Z","updated_at":"2025-12-24T12:20:01.162Z","avatar_url":"https://github.com/icarogabryel.png","language":"VHDL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MOOn IV\n\nDeveloped by Ícaro Gabryel\\\n[GitHub](https://github.com/icarogby)\n[LinkedIn](https://www.linkedin.com/in/icarogby/)\n\nFEDERAL UNIVERSITY OF PIAUI\\\nNATURE SCIENCE CENTER\\\nCOMPUTING DEPARTMENT\n\n## Introduction\nMany as Only One Quad-Core is a 16 Bit, unicycle and multicore processor designed for general purpose. It have two bank registers, memory hierarchy, uses Harvard architecture and have a 1024 words of 16 bits main memory.\n\n## Rights reserved\nThis code is registered in INPI (National Institute of Industrial Property) under the number BR512024001300-8. All rights reserved.\n\n## How To Simulate\nTo simulate the processor, you need to have the following tools installed:\n- ModelSim\n\nAfter installing the tools, you need to open the ModelSim, create a new project and add the files in the `Source` folder to the project. Then, you need to compile the files (compile with 2008 syntax) and simulate the `cometa_testbench.vhdl` file.\n\nYou can use the `compiler.py` file to compile codes written in the MOOn IV Assembly Language. After compiling, you can put the compiled .txt file (is obligatory to name the compiled file as \"main_mem.txt\") in the `Source` folder and simulate.\n\n## Compiler\nThe compiler is a Python script that compiles the MOOn IV Assembly Language to a .txt file that can be used to simulate the processor.\n\nTo use the compiler, you need to have Python installed. After installing Python, you can run the `compiler.py` file and put the file name of the code you want to compile and the file name of the output file.\n\n## Assembly Language\nThe MOOn IV Assembly Language is a simple language that is used to program the processor. The language is based on the Instruction Set Architecture (ISA) of the processor.\n\nThe language is case insensitive and the instructions are separated by a new line. The instructions have the following format:\n```assembly\n\u003cinstruction\u003e \u003coperand1\u003e \u003coperand2\u003e \u003coperand3\u003e\n```\n\nThe operands are separated by a comma and the number of operands depends on the instruction. The operands can be a register or a number.\n\n`\u0026` is used to indicate a AC register and `$`to indicate a RF register.\n\nNumbers can be decimal or binary. If the number starts with `b`, it is considered binary. Otherwise, it is considered decimal. Number also can be negative if it starts with `-`. If you want a negative binary number, you need to put the `-` before the `b`. The compiler will convert negative decimal numbers to two's complement.\n\nThe comments are indicated by `//`.\n\nThe following is an example of a code written in the MOOn IV Assembly Language:\n\n```\nlli \u00260, 3        // load 3 (0011) in ac0\nlli \u00261, 5        // load 5 (0101) in ac1\nmfac \u00260, $0      // move 3 to rf0\nmfac \u00261, $1      // move 5 to rf1\nadd \u00262, $0, $1   // arith and logic ops\nsub \u00262, $0, $1   // negative result\n```\n\n## Instruction Set Architecture - ISA\n\nThe MOOn IV ISA have 49 instruction and is divided in seven types of instructions: No Operation, Logical and Arithmetic Operations, Shift Operations, Move Operations, Immediate Operations, Memory Access Operations and Control Flow Operations.\nYou can find the ISA of the processor in the following link: [ISA](ISA.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficarogabryel%2Fmoon-iv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficarogabryel%2Fmoon-iv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficarogabryel%2Fmoon-iv/lists"}