{"id":21162934,"url":"https://github.com/redchenjs/neopixel_led_controller_max10","last_synced_at":"2026-02-11T21:03:50.790Z","repository":{"id":87898310,"uuid":"155308290","full_name":"redchenjs/neopixel_led_controller_max10","owner":"redchenjs","description":"NeoPixel LED Controller | NeoPixel LED 控制器 | 基於MAX10 FPGA的音樂全彩光立方LED控制器","archived":false,"fork":false,"pushed_at":"2022-01-04T12:28:52.000Z","size":1426,"stargazers_count":12,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-09T06:40:59.233Z","etag":null,"topics":["adafruit-neopixel","addressable-leds","apa106","controller","fpga","led","led-cube","led-matrix","led-panel","led-strip","max10","neopixel","sk6812","spi","ws2812","ws2812b","ws281x"],"latest_commit_sha":null,"homepage":"","language":"Verilog","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/redchenjs.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":"2018-10-30T01:54:42.000Z","updated_at":"2024-03-16T06:56:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"6bcbd235-e2b1-4b01-a36f-ede156ecf160","html_url":"https://github.com/redchenjs/neopixel_led_controller_max10","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/redchenjs/neopixel_led_controller_max10","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redchenjs%2Fneopixel_led_controller_max10","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redchenjs%2Fneopixel_led_controller_max10/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redchenjs%2Fneopixel_led_controller_max10/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redchenjs%2Fneopixel_led_controller_max10/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redchenjs","download_url":"https://codeload.github.com/redchenjs/neopixel_led_controller_max10/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redchenjs%2Fneopixel_led_controller_max10/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29345430,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["adafruit-neopixel","addressable-leds","apa106","controller","fpga","led","led-cube","led-matrix","led-panel","led-strip","max10","neopixel","sk6812","spi","ws2812","ws2812b","ws281x"],"created_at":"2024-11-20T13:35:14.051Z","updated_at":"2026-02-11T21:03:50.775Z","avatar_url":"https://github.com/redchenjs.png","language":"Verilog","funding_links":[],"categories":[],"sub_categories":[],"readme":"NeoPixel LED Controller\n=======================\n\nNeoPixel LED Controller based on MAX10 FPGA.\n\n## Main Features\n\n* 4-wire SPI interface (SCLK, MOSI, MISO, CS)\n* High refresh rate (500fps@8x8x8, 125fps@16x16x16)\n* 16 parallel output channels (up to 256 LEDs per channel)\n* Each output channel has a programmable circular linked list\n* Each output channel has a programmable waveform generator (T0H, T0L, T1H, T1L)\n\n## Pinout\n\n| Control I/O | FPGA Pin |      Data I/O      | FPGA Pin |      Data I/O       | FPGA Pin |\n| ----------: | :------- | :----------------: | :------: | :-----------------: | :------: |\n|       clk_i | PIN_J5   | neopixel_code_o[7] |  PIN_R5  | neopixel_code_o[15] |  PIN_C8  |\n|     rst_n_i | PIN_P15  | neopixel_code_o[6] |  PIN_L7  | neopixel_code_o[14] |  PIN_B7  |\n|        dc_i | PIN_R14  | neopixel_code_o[5] |  PIN_P4  | neopixel_code_o[13] |  PIN_D7  |\n|  spi_sclk_i | PIN_P12  | neopixel_code_o[4] |  PIN_L6  | neopixel_code_o[12] |  PIN_E7  |\n|  spi_mosi_i | PIN_R11  | neopixel_code_o[3] |  PIN_R3  | neopixel_code_o[11] |  PIN_B6  |\n|  spi_cs_n_i | PIN_R9   | neopixel_code_o[2] |  PIN_M5  | neopixel_code_o[10] |  PIN_A7  |\n|  spi_miso_o | PIN_P9   | neopixel_code_o[1] |  PIN_P3  | neopixel_code_o[9]  |  PIN_A5  |\n|           - |          | neopixel_code_o[0] |  PIN_M4  | neopixel_code_o[8]  |  PIN_B4  |\n\n* SPI slave mode: F_MAX=20MHz, CPOL=0, CPHA=0, MSB first\n\n## Commands\n\n### CONF_WR\n\n| Inst / Para | D/C | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX |\n| :---------: | :-: | :-: | -: | -: | -: | -: | -: | -: | -: | -: | --: |\n|   CONF_WR   |  0  |  W  |  0 |  0 |  1 |  0 |  1 |  0 |  1 |  0 | 2Ah |\n|  1st Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  2nd Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  3rd Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  4th Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  5th Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  6th Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n\n* 1st Param: T0H time (10 ns), range: 0 - 255\n* 2nd Param: T0L time (10 ns), range: 0 - 255\n* 3rd Param: T1H time (10 ns), range: 0 - 255\n* 4th Param: T1L time (10 ns), range: 0 - 255\n* 5th Param: Channel length, range: 0 - 255\n* 6th Param: Channel count, range: 0 - 15\n\n### ADDR_WR\n\n| Inst / Para | D/C | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX |\n| :---------: | :-: | :-: | -: | -: | -: | -: | -: | -: | -: | -: | --: |\n|   ADDR_WR   |  0  |  W  |  0 |  0 |  1 |  0 |  1 |  0 |  1 |  1 | 2Bh |\n|  1st Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|     ...     |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  Nth Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n\n* 1st Param: Channel 0, the next pointer of the 1st color data, range: 0 - 255\n* 2nd Param: Channel 0, the next pointer of the 2nd color data, range: 0 - 255\n* ...\n* Nth Param: ...\n\n* N_MAX = 256 x 16 = 4096\n\n### DATA_WR\n\n| Inst / Para | D/C | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX |\n| :---------: | :-: | :-: | -: | -: | -: | -: | -: | -: | -: | -: | --: |\n|   DATA_WR   |  0  |  W  |  0 |  0 |  1 |  0 |  1 |  1 |  0 |  0 | 2Ch |\n|  1st Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|     ...     |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  Nth Param  |  1  |  W  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n\n* 1st Param: Channel 0, the 1st color data, byte 2, range: 0 - 255\n* 2nd Param: Channel 0, the 1st color data, byte 1, range: 0 - 255\n* 3rd Param: Channel 0, the 1st color data, byte 0, range: 0 - 255\n* 4th Param: Channel 0, the 2nd color data, byte 2, range: 0 - 255\n* ...\n* Nth Param: ...\n\n* N_MAX = 256 x 16 x 3 = 12288\n\n### INFO_RD\n\n| Inst / Para | D/C | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX |\n| :---------: | :-: | :-: | -: | -: | -: | -: | -: | -: | -: | -: | --: |\n|   INFO_RD   |  0  |  W  |  0 |  0 |  1 |  1 |  1 |  0 |  1 |  0 | 3Ah |\n|  1st Data   |  1  |  R  |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 | 00h |\n|  2nd Data   |  1  |  R  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  3rd Data   |  1  |  R  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  4th Data   |  1  |  R  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  5th Data   |  1  |  R  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  6th Data   |  1  |  R  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  7th Data   |  1  |  R  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n|  7th Data   |  1  |  R  | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |     |\n\n* 1st Data: Dummy byte, 0x00\n* 2nd Data: RTL revision, major: {D7..D4}, minor: {D3..D0}\n* 3rd Data: T0H time (10 ns), range: 0 - 255\n* 4th Data: T0L time (10 ns), range: 0 - 255\n* 5th Data: T1H time (10 ns), range: 0 - 255\n* 6th Data: T1L time (10 ns), range: 0 - 255\n* 7th Data: Channel length, range: 0 - 255\n* 8th Data: Channel count, range: 0 - 15\n\n## Preparing\n\n### Obtain the source\n\n```\ngit clone https://github.com/redchenjs/neopixel_led_controller_max10.git\n```\n\n### Update an existing repository\n\n```\ngit pull\n```\n\n## Building\n\n* Quartus Prime 21.1.0 Lite Edition\n\n## Music Light Cube\n\n\u003cimg src=\"docs/cube0414.png\"\u003e\n\n## Videos Links\n\n* [音乐全彩光立方演示](https://www.bilibili.com/video/av25188707) ([YouTube](https://www.youtube.com/watch?v=F8nfA_mEhPg))\n* [音乐全彩光立方配套微信小程序](https://www.bilibili.com/video/av83055233) ([YouTube](https://www.youtube.com/watch?v=HlruQqkIGtc))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredchenjs%2Fneopixel_led_controller_max10","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredchenjs%2Fneopixel_led_controller_max10","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredchenjs%2Fneopixel_led_controller_max10/lists"}