{"id":17774657,"url":"https://github.com/jiegec/ps2","last_synced_at":"2025-10-09T16:35:14.533Z","repository":{"id":232522083,"uuid":"784118230","full_name":"jiegec/ps2","owner":"jiegec","description":"A PS/2 controller IP written in Chisel","archived":false,"fork":false,"pushed_at":"2024-04-13T15:26:59.000Z","size":14,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T16:56:03.468Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jiegec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-04-09T08:13:36.000Z","updated_at":"2024-08-31T08:14:18.000Z","dependencies_parsed_at":"2024-04-10T05:40:01.547Z","dependency_job_id":"deed632f-ef81-4c9b-8af2-47fbc9aabcf3","html_url":"https://github.com/jiegec/ps2","commit_stats":null,"previous_names":["jiegec/ps2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fps2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fps2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fps2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fps2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiegec","download_url":"https://codeload.github.com/jiegec/ps2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250150780,"owners_count":21383222,"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","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":[],"created_at":"2024-10-26T21:51:52.512Z","updated_at":"2025-10-09T16:35:09.480Z","avatar_url":"https://github.com/jiegec.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PS/2 Controller IP\n\nA PS/2 controller IP written in Chisel.\n\nInterface:\n\n- Tri-state ps2 clock and data\n- Ready-valid request and response\n\nInterface in verilog:\n\n```verilog\nmodule PS2Controller(\n  input        clock,\n               reset,\n               io_ps2_clock_i,\n  output       io_ps2_clock_o,\n               io_ps2_clock_t,\n  input        io_ps2_data_i,\n  output       io_ps2_data_o,\n               io_ps2_data_t,\n               io_req_ready,\n  input        io_req_valid,\n  input  [7:0] io_req_bits,\n  output       io_req_error,\n  input        io_resp_ready,\n  output       io_resp_valid,\n  output [7:0] io_resp_bits,\n  output       io_resp_error\n);\n```\n\nTo generate controller IP for 50MHz clock:\n\n```shell\nmill ps2.runMain ps2.PS2\n```\n\nSystemVerilog source is written at `PS2Controller.sv`. You can change and regenerate code if the clock frequency is different. But if you do not care about timeouts and run your design under a lower clock frequency, you do not need to change it.\n\nIf you do not have the environment for running mill, you can download prebuilt RTL from GitHub Actions artifact.\n\nReference:\n\n- [PS/2 Mouse/Keyboard Protocol by Adam Chapweske](https://www.burtonsys.com/ps2_chapweske.htm)\n- [The PS/2 Mouse Interface by Adam Chapweske](https://isdaman.com/alsos/hardware/mouse/ps2interface.htm)\n- [PS/2 Mouse](https://wiki.osdev.org/PS/2_Mouse)\n- [PS/2 Keyboard](https://wiki.osdev.org/PS/2_Keyboard)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiegec%2Fps2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiegec%2Fps2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiegec%2Fps2/lists"}