fomu-workshop/icestudio/Blinky.ice

1148 lines
177 KiB
Plaintext
Raw Normal View History

{
"version": "1.2",
"package": {
"name": "Blinky",
"version": "0.1",
"description": "Simple blinky example.",
"author": "Juan Manuel Rico",
"image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20xmlns:xlink=%22http://www.w3.org/1999/xlink%22%20width=%22770.987%22%20height=%221028.13%22%20viewBox=%220%200%20203.99033%20272.02606%22%3E%3Cg%20transform=%22translate(-3.005)%22%3E%3Crect%20width=%22201.083%22%20height=%22269.119%22%20x=%224.458%22%20y=%221.454%22%20ry=%2221.923%22%20opacity=%22.4%22%20stroke=%22#fff%22%20stroke-width=%222.907%22%20stroke-dasharray=%225.81400026,2.90700013%22/%3E%3Cimage%20y=%2234.262%22%20x=%2214.966%22%20xlink:href=%22data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcQAAAHECAYAAACnX1ofAAAABHNCSVQICAgIfAhkiAAAIABJREFU%20eJzt3Xm4HVd5Jvr3W7X32fucI1m2ZMmzbA2eLYNtESAxIQyBAHbSSdo2dJP0Y6Z0Qvo+Nzd5+g48%203HZfOp2b7kBumoaAGkygzWSRARJCmALEJozGgyRLso4ma7KmM++xhu/+oQEN5xydoaq+VbXf3z+Q%202K71YVXVu1fVWl8BRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE%20RERERERERERERERERERERERE8yHWBRCViep9fZuePzR47v+/FdRcf9xZMtU/E7qKA4BqEiVT/fVW%20UBvrjzvn/bV1K69oiGzsLrRmIjqBgUg9Z3LypZeNj+PqSly7LJZoBcRd1ifJciiWQtzFsUD3teKd%20SGSJQJZAkiqAiwARVbkYAATJEoU4ESwCUFWgH6p1k/9BIm0BWgBCVUwKNFG4sRN/KRk5+XeNQ12o%200DE4HRsaHVwdQcRBRxN1w32Ij6rTI7U+eQFheLi+qH7g9Wu/dsTkfw+REQYiFZ7qa5bhSHL10Th6%20k1O9UjS+wjm3XJxeUnHBxQJdVElQD4Kkz6k4ucBZ346BZyennKyVxg+PLsFk5Gb8e5wAQYCkT+Nu%20JdC2g0w6p6MB4mGBOxa45JBzlYNHJwe+PNm3eP//9dJPHc+pfKJMMBDJa6qvWYbxaDWS8ErEWInE%20XQmXXAXFSgBXAnI1gP40xwwV2DRe7kB8/MjF6MbpXv4i0lLFfkAPwsk+lyQHYq0ccIj2uUrtYNLp%203/UHr/rssVQHJUoRA5HM6ejdlyDEaihWo4LViJPVELcailsBvSL3ehR4suSB+O1DFyOxufzbAuwS%20yBYg2aVwuwJgVw3Y9dt3/90eESn3v3jyGgORcqPf6r8ateRWhG4dXHwLkmAdrrq2gyXLfs66tnM9%20Na5IVK3LyESsgu+8cLF1Gec51g4e3zJZ6VOnmyoqW5xgczMa3PzVX3/kkHVt1Bsq1gVQ+ei3sAhB%20/S6o3gYn6wDcikRvA5KLEQJAAiRy4j8nxr6DJctsC55CRRTdcuYhwsTP38FHYxcCerck+JkYiliB%20qpvEPX/9q8MCbBLIs7FLNvXF1U3LV17ykw3rNzSta6ZyYSDSguljS1YDnbuR6F0QuQvQl0C1DwCQ%20XCBV2uOLcyhxzgI/MyMVkaeBOBLKRVP/FV2qwCsV+kpJgFBCHNp3NH7T3/yL7Q54IlE87vrj737p%209V/aykeutBB+XhnkLf0qBtFXewUk+FlI8jJAfwbAlPvrZsVhHDevXwTFzEsec7ajkWAisq4iGyOd%20Cp4c9u13iCTfGa5MIpkuFGdxBMGoiH4fSfADV0n+ecUVKx7nLJLmgoFIM9JvoYJK9UWAvBZwr0Wi%20rwBQS3WQ1bcOod6/NtVjLtDupmIkLOcz0yPtPmweOa93gKnx2O14cqRyfaoHFURQPB1o8I3I4Rur%20+6587INv/GAn1TGoVBiIdB791pWXQo69CgHuRSK/jIXMAGdj+VWPY/kVd2c6xhw931IcK+lLxAPN%20GraPDViXcZbdTffY883KK7IcQwRNqPxjAv3bYDD5uy+97ksHsxyPiofvEAkAoN9ZsgqudT80+DXg%20+HqoOOT1NmZiBFie++6KGVVK/FPRx0U1o50g818fqhgA9B4B7tFGkNz7xV/5ocaVv1ok1Y2f+9XP%207cl6fPKff1cG5Ua/s/QaoPUAgPuB5CVmhYgbws13evXI9HBHcaBdzhnijvEB7Guk+9R7oR473jeU%20KGzOAYE64Iexuo21pP/zf/Xrn95vUgeZYyD2GP171DDQ98uA/CYEvwQfnhIIFDe+aByumu2j2Tk4%20HgJ7m+VcsLh1bACHmv4EYpRg7J+Ha4sVar6wSiCJiv5jAPmfl129/AtclNNbzE9Ayofet2atvv3a%2092FR/yGIPArBPfAhDAFAIZiY2Gldxpn8+BeTjTDllm0LNRJWdvgQhgCgUAfFa2PVTx7cd3Tfi959%207H13vl29enpB2fHiJKTs6H2r79YH1j4Kp9swGbwHk65tXdOUJkfGrUs4U1DiKyP0I3tOOxq6Sesa%20phI3lnW7rWXvaQHbb3mbfv3Wt+u9gPr1a4JS5deVQalQhdN/dcOb9YE1m+DwGJDcByAAIHhmYId1%20fVNqNBdZl3CmCsr5/hDwb2P+RKhe/dmfMrbn3udw4oG+U+C1ieJLN78NT9/8Dn0A6tmvCkoF/1BL%20RBVO7191L968+gnE0WcBve28v2nHYr82oJ0Sda6H+JNCZZ4hdn0KRIF2FGusy5jKxIFXTnWtrEOC%20z93ydmy69R36m7hPg9wLo8yU+LLvLfrA2tfhzWuehsiXALx42r9xUm5D6Cbyq2zWlqDV3GNdxCmV%20Eq83iz0KxFYouzSRS6zrOFccDjai7pLzf1CepMAtSYJP3rwYT978Tn1tnrVRdhiIBaf3rVmrD6x9%20FEi+OuWM8Px/ooZt/Zuzr2wemmMHrEs4RaSc/UxjFavPPk3pcOS8/JJF48Crn4HOqiPTOsT4+i1v%2006/f+Tt6c+aFUaYYiAWl993Xp29Z+x/hsOXkO8LZ27LYz/0EY6PePDIFyhmIaX8UeKFGu87Lc3F8%2072vnVJcCr2118ORNb9P/cNe7tJpVXZQtBmIB6X2r18H95HtIkv8bOPlVibkYCW6DSphBaQvTaV1m%20XcKZytitJvJsLUij6y63ruF8QdQdX3nrnP8xRU2Ah5oRnrj9XXpnBoVRxvy6OmhGCog+sPr/QCBP%20AAu44BRLsKe+JcXS0pEka6CJN+83AylfIvrUti1SnYzh34KayRdeskmBhXxBeV0U4Xs3P6j/nts0%20ioWBWBD6r9dehAdWbwTwR9AUHsk8s2hs4VWlLkBj3JsN+mWcIYYe3Z9Hw8pzCv9WaY7tftOC98Qq%200AfBH9/6IL647rfVu0VDNDUGYgHofWtvQRw/CeDXUzvoodrq1I6VprHhUesSTinjO8TIo3eIx7uB%20V80YTukevyW1ayMR3Bt38cMb3qU3pXVMyg4D0XP65uteikC/A5V0AyzRa3C05t8m/VbDm+8ScYaY%20reFQvNsT2x678blE3TVpHlMVaysxvnvr2/Xn0jwupY+B6DF98+o3Qd23oHppJgM8PeDNNofTwvZa%20Xzbol3KG6Ms7RIFGsXr3lGJs5xsy+UaiKpYq8LV179Q3ZHF8SgcD0VP6r1e/BsAXAPRnNsju+orM%20jj1fKkvRae+zLgMAKiW8OnzpUtOMsDcBllnXca7WCy/JbKWzKgbiGH9z6zv19VmNQQtTwku++PSt%20a34WMb4IRT3TgUJ3MxqBfxujJ0f9CETrAjIQJX5c8se6Fe+eToTtSw/H8UCm7/oU6NMEX7j9
},
"design": {
"board": "fomu",
"graph": {
"blocks": [
{
"id": "e3c9bc63-8b3a-4bf0-a6a4-abf64dec805b",
"type": "basic.output",
"data": {
"name": "BLUE",
"pins": [
{
"index": "0",
"name": "rgb0",
"value": "A5"
}
],
"virtual": false
},
"position": {
"x": 1080,
"y": 320
}
},
{
"id": "fd5a9c81-dceb-4773-af8d-f3c7d472f43c",
"type": "basic.output",
"data": {
"name": "RED",
"pins": [
{
"index": "0",
"name": "rgb1",
"value": "B5"
}
],
"virtual": false
},
"position": {
"x": 1080,
"y": 456
}
},
{
"id": "788c569d-cf7f-4dae-aac1-76189ebc5ec8",
"type": "basic.input",
"data": {
"name": "clk",
"pins": [
{
"index": "0",
"name": "clk",
"value": "F4"
}
],
"virtual": false,
"clock": false
},
"position": {
"x": -24,
"y": 488
}
},
{
"id": "9d5d6cc4-a66f-4bef-b255-3e4d06406775",
"type": "basic.output",
"data": {
"name": "GREEN",
"pins": [
{
"index": "0",
"name": "rgb2",
"value": "C5"
}
],
"virtual": false
},
"position": {
"x": 1080,
"y": 592
}
},
{
"id": "1ef8433d-89c7-4a46-9f81-127e4625c385",
"type": "basic.output",
"data": {
"name": "usb_dn",
"pins": [
{
"index": "0",
"name": "usb_dn",
"value": "A2"
}
],
"virtual": false
},
"position": {
"x": 120,
"y": 792
}
},
{
"id": "c3202cb6-0734-4718-8e2c-06a6af70dce1",
"type": "basic.output",
"data": {
"name": "usb_dp",
"pins": [
{
"index": "0",
"name": "usb_dp",
"value": "A1"
}
],
"virtual": false
},
"position": {
"x": 120,
"y": 872
}
},
{
"id": "87665084-46bd-4bc9-8904-ba5e1d5f25fa",
"type": "basic.output",
"data": {
"name": "usb_dp_pu",
"pins": [
{
"index": "0",
"name": "usb_dp_pu",
"value": "A4"
}
],
"virtual": false
},
"position": {
"x": 120,
"y": 952
}
},
{
"id": "1dd78ea6-3955-462b-a500-2b60b6f150a0",
"type": "basic.constant",
"data": {
"name": "mode",
"value": "\"0b1\"",
"local": true
},
"position": {
"x": 632,
"y": 128
}
},
{
"id": "4450d93c-241e-4519-89b1-3db32b05a74f",
"type": "basic.constant",
"data": {
"name": "current",
"value": "\"0b000011\"",
"local": true
},
"position": {
"x": 736,
"y": 128
}
},
{
"id": "7ee4fba5-3303-4928-931a-f67ceb9d1721",
"type": "basic.info",
"data": {
"info": "Assign USB pins to \"0\" so as to disconnect Fomu from\nthe host system. Otherwise it would try to talk to\nus over USB, which wouldn't work since we have no stack.",
"readonly": true
},
"position": {
"x": -120,
"y": 704
},
"size": {
"width": 480,
"height": 72
}
},
{
"id": "f7f8fbf8-4b48-469a-9f57-425e689b3369",
"type": "c4dd08263a85a91ba53e2ae2b38de344c5efcb52",
"position": {
"x": -16,
"y": 872
},
"size": {
"width": 96,
"height": 64
}
},
{
"id": "b7e33c0f-3564-4177-8ac5-d6e45ba9ee8f",
"type": "c83dcd1d9ab420d911df81b3dfae04681559c623",
"position": {
"x": 472,
"y": 320
},
"size": {
"width": 96,
"height": 64
}
},
{
"id": "79b80dea-9c20-48b9-a730-68b323381b69",
"type": "basic.info",
"data": {
"info": "Half mode, 4mA of current.",
"readonly": true
},
"position": {
"x": 648,
"y": 80
},
"size": {
"width": 320,
"height": 40
}
},
{
"id": "e7918044-9199-4924-b779-322f730fe898",
"type": "7e8a8487326789a3a850e11d69ae282c1f1243cf",
"position": {
"x": 704,
"y": 408
},
"size": {
"width": 128,
"height": 160
}
},
{
"id": "998cba08-879f-4b56-b65e-a3ad0eb5b9b7",
"type": "f5aaea4fc8237827e0e1b605bfb9dbaea380b919",
"position": {
"x": 400,
"y": 472
},
"size": {
"width": 96,
"height": 96
}
},
{
"id": "b87f9b8c-1554-48c2-9da5-c5f1147a0f4c",
"type": "33a267ad6518ad38665e0c928c4607172b2c0edc",
"position": {
"x": 184,
"y": 488
},
"size": {
"width": 96,
"height": 64
}
}
],
"wires": [
{
"source": {
"block": "1dd78ea6-3955-462b-a500-2b60b6f150a0",
"port": "constant-out"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "ef62aea7-0f83-4fd8-80f0-5c93e3a677e5"
}
},
{
"source": {
"block": "4450d93c-241e-4519-89b1-3db32b05a74f",
"port": "constant-out"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "3bcab194-bcfe-46b5-91ff-208a843def63"
},
"vertices": [
{
"x": 776,
"y": 240
}
]
},
{
"source": {
"block": "4450d93c-241e-4519-89b1-3db32b05a74f",
"port": "constant-out"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "6100c41e-2ba3-442a-b6fa-7f20e0b53194"
}
},
{
"source": {
"block": "4450d93c-241e-4519-89b1-3db32b05a74f",
"port": "constant-out"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "fe7e8f4c-224f-42d3-b2f1-ab2f0ade9f31"
},
"vertices": [
{
"x": 784,
"y": 240
},
{
"x": 792,
"y": 240
}
]
},
{
"source": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "85ab9730-f026-4285-86dd-abb2f338ae31"
},
"target": {
"block": "e3c9bc63-8b3a-4bf0-a6a4-abf64dec805b",
"port": "in"
}
},
{
"source": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "7c85e6ad-6f1d-49d8-9c1c-82ad40d8b230"
},
"target": {
"block": "fd5a9c81-dceb-4773-af8d-f3c7d472f43c",
"port": "in"
}
},
{
"source": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "e981e408-54c7-4b38-bc99-2508dd197e1e"
},
"target": {
"block": "9d5d6cc4-a66f-4bef-b255-3e4d06406775",
"port": "in"
}
},
{
"source": {
"block": "f7f8fbf8-4b48-469a-9f57-425e689b3369",
"port": "19c8f68d-5022-487f-9ab0-f0a3cd58bead"
},
"target": {
"block": "1ef8433d-89c7-4a46-9f81-127e4625c385",
"port": "in"
}
},
{
"source": {
"block": "f7f8fbf8-4b48-469a-9f57-425e689b3369",
"port": "19c8f68d-5022-487f-9ab0-f0a3cd58bead"
},
"target": {
"block": "c3202cb6-0734-4718-8e2c-06a6af70dce1",
"port": "in"
}
},
{
"source": {
"block": "998cba08-879f-4b56-b65e-a3ad0eb5b9b7",
"port": "1d736c39-4508-4892-a588-95c481288c3f"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "3417cd76-ecff-4b2a-9ae3-45faa8cc042e"
}
},
{
"source": {
"block": "998cba08-879f-4b56-b65e-a3ad0eb5b9b7",
"port": "b395b403-3bfe-4808-bd8d-90d10b20b936"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "838cb58a-2211-4a35-8253-18ac9491457b"
}
},
{
"source": {
"block": "998cba08-879f-4b56-b65e-a3ad0eb5b9b7",
"port": "0bb7dca1-6a06-48c0-b91d-e6e6dd86d18e"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "b6d5b2a0-6c0d-4b7c-bb62-6aa6605ea429"
}
},
{
"source": {
"block": "b7e33c0f-3564-4177-8ac5-d6e45ba9ee8f",
"port": "19c8f68d-5022-487f-9ab0-f0a3cd58bead"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "b15672d8-2cc0-4f2e-a5c6-94de78659ccf"
}
},
{
"source": {
"block": "b7e33c0f-3564-4177-8ac5-d6e45ba9ee8f",
"port": "19c8f68d-5022-487f-9ab0-f0a3cd58bead"
},
"target": {
"block": "e7918044-9199-4924-b779-322f730fe898",
"port": "0e1f9059-67d6-40cc-8653-6c8208093b4f"
}
},
{
"source": {
"block": "b87f9b8c-1554-48c2-9da5-c5f1147a0f4c",
"port": "02554bef-db6b-4e07-9bf1-478d7995c7b6"
},
"target": {
"block": "998cba08-879f-4b56-b65e-a3ad0eb5b9b7",
"port": "d880db6e-2929-4aba-a450-b2723417bd70"
}
},
{
"source": {
"block": "788c569d-cf7f-4dae-aac1-76189ebc5ec8",
"port": "out"
},
"target": {
"block": "b87f9b8c-1554-48c2-9da5-c5f1147a0f4c",
"port": "ea761b76-2554-46fc-9436-991ee3fd292a"
}
},
{
"source": {
"block": "f7f8fbf8-4b48-469a-9f57-425e689b3369",
"port": "19c8f68d-5022-487f-9ab0-f0a3cd58bead"
},
"target": {
"block": "87665084-46bd-4bc9-8904-ba5e1d5f25fa",
"port": "in"
}
}
]
}
},
"dependencies": {
"c4dd08263a85a91ba53e2ae2b38de344c5efcb52": {
"package": {
"name": "Bit 0",
"version": "1.0.0",
"description": "Assign 0 to the output wire",
"author": "Jesús Arroyo",
"image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2247.303%22%20height=%2227.648%22%20viewBox=%220%200%2044.346456%2025.919999%22%3E%3Ctext%20style=%22line-height:125%25%22%20x=%22325.37%22%20y=%22315.373%22%20font-weight=%22400%22%20font-size=%2212.669%22%20font-family=%22sans-serif%22%20letter-spacing=%220%22%20word-spacing=%220%22%20transform=%22translate(-307.01%20-298.51)%22%3E%3Ctspan%20x=%22325.37%22%20y=%22315.373%22%20style=%22-inkscape-font-specification:'Courier%2010%20Pitch'%22%20font-family=%22Courier%2010%20Pitch%22%3E0%3C/tspan%3E%3C/text%3E%3C/svg%3E"
},
"design": {
"graph": {
"blocks": [
{
"id": "19c8f68d-5022-487f-9ab0-f0a3cd58bead",
"type": "basic.output",
"data": {
"name": ""
},
"position": {
"x": 608,
"y": 192
}
},
{
"id": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5",
"type": "basic.code",
"data": {
"code": "// Bit 0\n\nassign v = 1'b0;",
"params": [],
"ports": {
"in": [],
"out": [
{
"name": "v"
}
]
}
},
"position": {
"x": 96,
"y": 96
},
"size": {
"width": 384,
"height": 256
}
}
],
"wires": [
{
"source": {
"block": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5",
"port": "v"
},
"target": {
"block": "19c8f68d-5022-487f-9ab0-f0a3cd58bead",
"port": "in"
}
}
]
}
}
},
"c83dcd1d9ab420d911df81b3dfae04681559c623": {
"package": {
"name": "Bit 1",
"version": "1.0.0",
"description": "Assign 1 to the output wire",
"author": "Jesús Arroyo",
"image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2247.303%22%20height=%2227.648%22%20viewBox=%220%200%2044.346456%2025.919999%22%3E%3Ctext%20style=%22line-height:125%25%22%20x=%22325.218%22%20y=%22315.455%22%20font-weight=%22400%22%20font-size=%2212.669%22%20font-family=%22sans-serif%22%20letter-spacing=%220%22%20word-spacing=%220%22%20transform=%22translate(-307.01%20-298.51)%22%3E%3Ctspan%20x=%22325.218%22%20y=%22315.455%22%20style=%22-inkscape-font-specification:'Courier%2010%20Pitch'%22%20font-family=%22Courier%2010%20Pitch%22%3E1%3C/tspan%3E%3C/text%3E%3C/svg%3E"
},
"design": {
"graph": {
"blocks": [
{
"id": "19c8f68d-5022-487f-9ab0-f0a3cd58bead",
"type": "basic.output",
"data": {
"name": ""
},
"position": {
"x": 608,
"y": 192
}
},
{
"id": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5",
"type": "basic.code",
"data": {
"code": "// Bit 1\n\nassign v = 1'b1;",
"params": [],
"ports": {
"in": [],
"out": [
{
"name": "v"
}
]
}
},
"position": {
"x": 96,
"y": 96
},
"size": {
"width": 384,
"height": 256
}
}
],
"wires": [
{
"source": {
"block": "b959fb96-ac67-4aea-90b3-ed35a4c17bf5",
"port": "v"
},
"target": {
"block": "19c8f68d-5022-487f-9ab0-f0a3cd58bead",
"port": "in"
}
}
]
}
}
},
"7e8a8487326789a3a850e11d69ae282c1f1243cf": {
"package": {
"name": "SB_RGBA_DRV",
"version": "0.1",
"description": "iCE40 UltraPlus RGB driver.",
"author": "Juan Manuel Rico",
"image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20xmlns:xlink=%22http://www.w3.org/1999/xlink%22%20width=%22770.987%22%20height=%221028.13%22%20viewBox=%220%200%20203.99033%20272.02606%22%3E%3Cg%20transform=%22translate(-3.005)%22%3E%3Crect%20width=%22201.083%22%20height=%22269.119%22%20x=%224.458%22%20y=%221.454%22%20ry=%2221.923%22%20opacity=%22.4%22%20stroke=%22#fff%22%20stroke-width=%222.907%22%20stroke-dasharray=%225.81400026,2.90700013%22/%3E%3Cimage%20y=%2222.261%22%20x=%2229.594%22%20xlink:href=%22data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjoAAAJVCAYAAADX6l9PAAAABHNCSVQICAgIfAhkiAAAIABJREFU%20eJzsvXmQHdd15vnLt9a+b1gKhY0AiZ2kKJISRZByS5bERZZkk5abAhVjOWIsd3scjvG47e4Jh2Pc%207eieDofs9tAd4/aEANGSBYdlrbQtuUVR1mrS3EEsxA4QawGoQu1vu/PHe1UvM+/N96pQN1++qjpf%20oKIe7nn33JPnZN7z1c17Mh0EAoGgAl6C5CFoS0FrHlpV8XdLvPRZQSvQ6kDL7OfSTwvm/wOMAeOl%2032P+/zswpkr/d0o/eRiLw7hT/D2WgbHtcPNdkK2lPwQCwdKCE7UBAoGgPnAQBmbg9gJsVXC7A1uB%202xUMAbGo7QtAwYEzwBEFRx04EoOjaTjyBFyK2jiBQBA9hOgIBCsIz0H6CmyOlwgNcDtFYrMVaI/Y%20PNsYdeAoxZ8jMTiahyN9cPwjMBO1cQKBoDYQoiMQLEMchK5J2IFrZYbi7/UK4tFaFy0cyAOnKREg%20VfrdBG8+AdcjNU4gEFiHEB2BYBngILRPw4PAwwreD+xScn0vCA4o4HUHvgs83wDffwJGo7ZLIBAs%20DjIRCgRLEAegGXigUCQ1Dztw10pfqbENB/IKXgaejxXJzw/2wUTUdgkEgoVBiI5AsATwPDSchfsd%20eH8BHgbeDSSjtmuFIQv8cwyeV/DddfDjh2E6aqMEAkFlCNERCOoQL0HyLbhXlW9F3Q+ko7ZL4MEM%208GMHvuvA89vgp1LqLhDUH4ToCAR1gmdhbQ5+0YEPKHgAaIraJsGCMOnADxR8JwF/9RScj9oggUAg%20REcgiBQHoLkAnwD2UbwlVa/PqxEsDAXgeeBADP5G9vYIBNFBiI5AUGMoiB0o3o7aB3xcFTcWC5Yp%20nCLJ+QpwYF/xNlchapsEgpUEIToCQY3wedjuwKeApxSsidoeQe3hwDvAswq+8Gk4FLE5AsGKgBAd%20gSBEHIA+BZ9UxdWbu6K2R1BXeNmBAw58aR9cidoYgWC5QoiOQGAZz0F6GB4vkZsPKUhEbZOgfuFA%20Dvh7Bw70wNfl9RQCgV0I0REILOFZeG+uSG6eADqitkewJDECHEzAgafgh1EbIxAsBwjREQgWAQXO%20s/DxPPwucmtKYBcvx+E/PQVfKb2eQiAQ3AKE6AgEt4CDEJ8q7r35HWBb1PYIljXecuAPG+FLTxRf%20SCoQCBYAIToCwQJwEFLT8LSC31awKWp7BCsHDpxw4D83wP4nIBO1PQLBUoEQHYFgHjgIjdPwKwp+%20S8HaqO0RrFw4cN6B/7sB/vwJmIraHoGg3iFERyCogK9B6wh8FvhNBX1R2xMZHIem1lZSDQ0k0+ni%20TypFIpXy/D+ZTpfbXLJEKjX3f4DszAzZTIZcJlP8XPp/dmam3OaS5TIZz/8z09NMjo2BWrlbV5xi%20SfofdcAzH4WxqO0RCOoVQnQEAgMOQtcU/Drw6wo6o7anVkim07T19NDe3V383dMz9/94sr5elp7P%20Zhm9do2bw8OMDg8Xf5f+n51ZORXaDtwA/qQR/uQJuB61PQJBvUGIjkDgwhehPwO/6cBnFbREbU8Y%20cGIxWjo6PCRmltQ0trZGbZ4VTI2NaeRndHiY8ZERVGF5voHBgXEFz6Tgj34JLkdtj0BQLxCiIxAA%20X4LBDPwfwC8raIzaHluIJ5P0DQ7Sv349HX19tPf00NrVRTyxMp9hmM/lGLt+ndHhYUauXOHy6dNc%20OXeOfDYbtWnW4BT37fxFCv7LJ+Fc1PYIBFFDiI5gRaP0FOPfLhTLxBuitmexiMXj9Kxdy6oNG1i1%20cSM9a9euWFIzX+RzOYbPn+fiyZNcPHWK4fPnKeSXRRX3dAz+sAf+szxtWbCSIURHsGJxAH5WwZ8q%202By1LbcKx3HoWr16jtj0rVtHIpWK2qwljVwmw5WzZ+eIz/ULF1BLeNOzA8cd+Df74B+itkUgiAJC%20dAQrDs/C2hx8DvhE1LYsGI5DR28vqzZuZNXGjfSvX0+qYckvRNU1MtPTXD59ukh8Tp5k5OrVpVrt%209TcJ+I2n4HzUhggEtYQQHcGKwUuQPAS/Afyeguao7ZkvGpqbWXfHHazauJGBDRtoaF4ypi9LTE9M%20cOnUKS6ePMnZw4eZnpiI2qR5w4EJ4Pe3w+feBctnY5JAUAFCdAQrAgdgbwGeYYm8riGeSDB4++1s%202rOHNZs348RiUZskMEAVCrxz/DgnXn2Vc0eOkM/lojZpvngrBp/dBy9EbYhAEDaE6AiWNb4I/Vn4%20rwqeitqWqnAc+oeG2LR7N0Pbt8stqSWGzPQ0Zw4d4sRrr3H5zJklcXvLgWeT8L9LObpgOUOIjmBZ%20ovTSzV9V8AdAe9T2VEJbdzeb9uxh4+7dtHR0RG2OwALGR0Y4+dprnHj1VW5euxa1OdUw6sB/aIQ/%20k5eGCpYjhOgIlh2ehfvy8IyCO6O2JQjpxkbW79zJpt276R0cjNocQYi4eu4cJ157jdNvvMHMVP2+%20msqBV+Lw2afgJ1HbIhDYhBAdwbLBfugG/hD4jKrDczsWj7N2yxY27dnD2i1biMXjUZskqCEK+Tzn%20jx3jxKuvcv7Ysbp8Vo8DCvgfwO88DXW/FCUQzAd1lwwEglvB5+GTDvw3VSQ7dYWWjg62vec9bNy9%20m3TjsnnosmARmJma4uRrr/HWj37E+MhI1OZocOCagn/7afhS1LYIBIuFEB3BksZBaJyCP1bwK1Hb%204kd7Tw87H3yQjbt2SdWUwAhVKHDy9dd54/vfZ3R4OGpzNDjw543wvz1RfK2EQLAkIURHsGTxBdia%20h78GdkZtixud/f3s2ruXoe3bcRy5xATVoZTizKFDvP7CC9y4XHcFUG/E4Rc+BUejNkQguBXILCxY%20kthfLBf/s3p6w3jPmjXs2ruXwa1bQQiO4FagFOeOHuX1F15g+J13orZmDg6MA7/6NDwbtS0CwUIh%20s7FgSeEgNE7CfwN+OWpbZtG/fj279u5l9aZNUZsiWEa4cOIEr7/wApdPn47aFDf+ogn+rdzKEiwl%20CNERLBkcgDsUHFSwI2pbAFZv3syuvXvpHxqK2pRoEY+Xf2JxVDwO8RjEiv8nHkPFYnOfUUA+D4U8%20Tj6PyudxCnnIF8D125n9f6EQ9RFGistnzvD6Cy9w4fjxqE0BwIE3HXhiHxyO2haBYD4QoiNYEvg8%207HOKz8aJ9kVPjsPg1q3s2ruXnjVrIjWlJkiloLERGptQDY3Fz+kG1ByRiQGqSF5mnwSsVPlt30oZ%205SiFqiQvtc3pmSNGBcjM4GQyxZ/sDE4mC/kl8+qFW8bwO+/w+gsvcO7o0cifuuzAhILPfhoORGqI%20QDAPCNER1DW+AU3X4P8BPh21LUPbt7P7oYfo7O+P2hS7iMWgsQmamoqEpkRsaGwsERkM
},
"design": {
"graph": {
"blocks": [
{
"id": "b15672d8-2cc0-4f2e-a5c6-94de78659ccf",
"type": "basic.input",
"data": {
"name": "power_up",
"clock": false
},
"position": {
"x": -256,
"y": 128
}
},
{
"id": "85ab9730-f026-4285-86dd-abb2f338ae31",
"type": "basic.output",
"data": {
"name": "BLUE"
},
"position": {
"x": 1016,
"y": 168
}
},
{
"id": "0e1f9059-67d6-40cc-8653-6c8208093b4f",
"type": "basic.input",
"data": {
"name": "enable",
"clock": false
},
"position": {
"x": -256,
"y": 240
}
},
{
"id": "7c85e6ad-6f1d-49d8-9c1c-82ad40d8b230",
"type": "basic.output",
"data": {
"name": "RED"
},
"position": {
"x": 1024,
"y": 352
}
},
{
"id": "3417cd76-ecff-4b2a-9ae3-45faa8cc042e",
"type": "basic.input",
"data": {
"name": "BLUE_PWM",
"clock": false
},
"position": {
"x": -256,
"y": 352
}
},
{
"id": "838cb58a-2211-4a35-8253-18ac9491457b",
"type": "basic.input",
"data": {
"name": "RED_PWM",
"clock": false
},
"position": {
"x": -256,
"y": 464
}
},
{
"id": "e981e408-54c7-4b38-bc99-2508dd197e1e",
"type": "basic.output",
"data": {
"name": "GREEN"
},
"position": {
"x": 1024,
"y": 536
}
},
{
"id": "b6d5b2a0-6c0d-4b7c-bb62-6aa6605ea429",
"type": "basic.input",
"data": {
"name": "GREEN_PWM",
"clock": false
},
"position": {
"x": -256,
"y": 576
}
},
{
"id": "ef62aea7-0f83-4fd8-80f0-5c93e3a677e5",
"type": "basic.constant",
"data": {
"name": "MODE",
"value": "\"0b0\"",
"local": false
},
"position": {
"x": 168,
"y": -152
}
},
{
"id": "3bcab194-bcfe-46b5-91ff-208a843def63",
"type": "basic.constant",
"data": {
"name": "BLUE_CURRENT",
"value": "\"0b000000\"",
"local": false
},
"position": {
"x": 352,
"y": -152
}
},
{
"id": "6100c41e-2ba3-442a-b6fa-7f20e0b53194",
"type": "basic.constant",
"data": {
"name": "RED_CURRENT",
"value": "\"0b000000\"",
"local": false
},
"position": {
"x": 536,
"y": -152
}
},
{
"id": "fe7e8f4c-224f-42d3-b2f1-ab2f0ade9f31",
"type": "basic.constant",
"data": {
"name": "GREEN_CURRENT",
"value": "\"0b000000\"",
"local": false
},
"position": {
"x": 720,
"y": -152
}
},
{
"id": "15b1918f-21ac-49c1-8287-081992b83b33",
"type": "basic.code",
"data": {
"code": "\n SB_RGBA_DRV #(\n .CURRENT_MODE (MODE),\n .RGB0_CURRENT (BLUE_CURRENT),\n .RGB1_CURRENT (RED_CURRENT),\n .RGB2_CURRENT (GREEN_CURRENT)\n ) RGBA_DRIVER (\n .CURREN (power_up),\n .RGBLEDEN (enable),\n .RGB0PWM (BLUE_PWM),\n .RGB1PWM (RED_PWM),\n .RGB2PWM (GREEN_PWM),\n .RGB0 (BLUE),\n .RGB1 (RED),\n .RGB2 (GREEN)\n );",
"params": [
{
"name": "MODE"
},
{
"name": "BLUE_CURRENT"
},
{
"name": "RED_CURRENT"
},
{
"name": "GREEN_CURRENT"
}
],
"ports": {
"in": [
{
"name": "power_up"
},
{
"name": "enable"
},
{
"name": "BLUE_PWM"
},
{
"name": "RED_PWM"
},
{
"name": "GREEN_PWM"
}
],
"out": [
{
"name": "BLUE"
},
{
"name": "RED"
},
{
"name": "GREEN"
}
]
}
},
"position": {
"x": 120,
"y": 104
},
"size": {
"width": 736,
"height": 560
}
}
],
"wires": [
{
"source": {
"block": "b15672d8-2cc0-4f2e-a5c6-94de78659ccf",
"port": "out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "power_up"
}
},
{
"source": {
"block": "ef62aea7-0f83-4fd8-80f0-5c93e3a677e5",
"port": "constant-out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "MODE"
}
},
{
"source": {
"block": "3bcab194-bcfe-46b5-91ff-208a843def63",
"port": "constant-out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "BLUE_CURRENT"
}
},
{
"source": {
"block": "6100c41e-2ba3-442a-b6fa-7f20e0b53194",
"port": "constant-out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "RED_CURRENT"
}
},
{
"source": {
"block": "fe7e8f4c-224f-42d3-b2f1-ab2f0ade9f31",
"port": "constant-out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "GREEN_CURRENT"
}
},
{
"source": {
"block": "0e1f9059-67d6-40cc-8653-6c8208093b4f",
"port": "out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "enable"
}
},
{
"source": {
"block": "3417cd76-ecff-4b2a-9ae3-45faa8cc042e",
"port": "out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "BLUE_PWM"
}
},
{
"source": {
"block": "838cb58a-2211-4a35-8253-18ac9491457b",
"port": "out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "RED_PWM"
}
},
{
"source": {
"block": "b6d5b2a0-6c0d-4b7c-bb62-6aa6605ea429",
"port": "out"
},
"target": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "GREEN_PWM"
}
},
{
"source": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "BLUE"
},
"target": {
"block": "85ab9730-f026-4285-86dd-abb2f338ae31",
"port": "in"
}
},
{
"source": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "RED"
},
"target": {
"block": "7c85e6ad-6f1d-49d8-9c1c-82ad40d8b230",
"port": "in"
}
},
{
"source": {
"block": "15b1918f-21ac-49c1-8287-081992b83b33",
"port": "GREEN"
},
"target": {
"block": "e981e408-54c7-4b38-bc99-2508dd197e1e",
"port": "in"
}
}
]
}
}
},
"f5aaea4fc8237827e0e1b605bfb9dbaea380b919": {
"package": {
"name": "PWM_GENERATOR",
"version": "0.1",
"description": "PWM generator.",
"author": "Juan Manuel Rico",
"image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22666.462%22%20height=%22652.176%22%20viewBox=%220%200%20176.3347%20172.55495%22%3E%3Cg%20transform=%22translate(-19.155%20-61.967)%22%3E%3Crect%20width=%22176.335%22%20height=%22172.555%22%20x=%2219.155%22%20y=%2261.967%22%20ry=%2226.063%22%20opacity=%22.5%22/%3E%3Cpath%20d=%22M43.03%20161.962h14.06v-33.816h15.387v33.816l41.89.19.095-33.626%2015.768-.19.19%2033.626%2038.376.19%22%20fill=%22none%22%20stroke=%22#a81c1c%22%20stroke-width=%224%22/%3E%3Cpath%20d=%22M168.8%20116.531h-14.057V82.715h-15.389v33.816l-41.89.19-.095-33.626-15.768-.19-.19%2033.626-38.375.19%22%20fill=%22none%22%20stroke=%22#0000af%22%20stroke-width=%224%22/%3E%3Cpath%20d=%22M168.8%20207.392h-14.057v-33.816h-15.389v33.816l-41.89.19-.095-33.626-15.768-.19-.19%2033.626-38.375.19%22%20fill=%22none%22%20stroke=%22#1aab1b%22%20stroke-width=%224%22/%3E%3C/g%3E%3C/svg%3E"
},
"design": {
"graph": {
"blocks": [
{
"id": "1d736c39-4508-4892-a588-95c481288c3f",
"type": "basic.output",
"data": {
"name": "pwm_0"
},
"position": {
"x": 784,
"y": 152
}
},
{
"id": "b395b403-3bfe-4808-bd8d-90d10b20b936",
"type": "basic.output",
"data": {
"name": "pwm_1"
},
"position": {
"x": 784,
"y": 256
}
},
{
"id": "d880db6e-2929-4aba-a450-b2723417bd70",
"type": "basic.input",
"data": {
"name": "clk_input",
"clock": false
},
"position": {
"x": -88,
"y": 256
}
},
{
"id": "0bb7dca1-6a06-48c0-b91d-e6e6dd86d18e",
"type": "basic.output",
"data": {
"name": "pwm_2"
},
"position": {
"x": 784,
"y": 360
}
},
{
"id": "e510937c-2a8a-430b-aed2-ae42093e9ba4",
"type": "basic.code",
"data": {
"code": " // Use counter logic to divide system clock. \n // The clock is 48 MHz, so we divide it down by 2^28.\n reg [28:0] counter = 0;\n \n assign pwm_0 = counter[25];\n assign pwm_1 = counter[24];\n assign pwm_2 = counter[23];\n\n always @(posedge clk_input) begin\n counter <= counter + 1;\n end",
"params": [],
"ports": {
"in": [
{
"name": "clk_input"
}
],
"out": [
{
"name": "pwm_0"
},
{
"name": "pwm_1"
},
{
"name": "pwm_2"
}
]
}
},
"position": {
"x": 104,
"y": 128
},
"size": {
"width": 568,
"height": 320
}
}
],
"wires": [
{
"source": {
"block": "e510937c-2a8a-430b-aed2-ae42093e9ba4",
"port": "pwm_2"
},
"target": {
"block": "0bb7dca1-6a06-48c0-b91d-e6e6dd86d18e",
"port": "in"
}
},
{
"source": {
"block": "e510937c-2a8a-430b-aed2-ae42093e9ba4",
"port": "pwm_1"
},
"target": {
"block": "b395b403-3bfe-4808-bd8d-90d10b20b936",
"port": "in"
}
},
{
"source": {
"block": "e510937c-2a8a-430b-aed2-ae42093e9ba4",
"port": "pwm_0"
},
"target": {
"block": "1d736c39-4508-4892-a588-95c481288c3f",
"port": "in"
}
},
{
"source": {
"block": "d880db6e-2929-4aba-a450-b2723417bd70",
"port": "out"
},
"target": {
"block": "e510937c-2a8a-430b-aed2-ae42093e9ba4",
"port": "clk_input"
}
}
]
}
}
},
"33a267ad6518ad38665e0c928c4607172b2c0edc": {
"package": {
"name": "CLK_BUFFERING",
"version": "0.1",
"description": "System clock buffering.",
"author": "Juan Manuel Rico",
"image": "%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22666.462%22%20height=%22652.176%22%20viewBox=%220%200%20176.3347%20172.55495%22%3E%3Cg%20transform=%22translate(-19.155%20-61.967)%22%20stroke=%22#fff%22%3E%3Crect%20width=%22176.335%22%20height=%22172.555%22%20x=%2219.155%22%20y=%2261.967%22%20ry=%2226.063%22%20opacity=%22.5%22%20stroke-width=%222%22%20stroke-dasharray=%224,2%22/%3E%3Cpath%20d=%22M24.591%20174.29h17.335v-57.953h32.681l.946%2057.954%2037.003.325.117-57.628%2033.623-.798.234%2058.1%2033.142.326%22%20fill=%22none%22%20stroke-width=%222.907%22/%3E%3Cpath%20d=%22M37.077%20173.622h17.335v-57.954h32.681l.945%2057.954%2037.004.326.117-57.629%2033.622-.798.235%2058.101%2033.142.326%22%20fill=%22none%22%20stroke-width=%222.907%22%20stroke-dasharray=%225.81400034,2.90700016999999988%22%20opacity=%22.4%22/%3E%3C/g%3E%3C/svg%3E"
},
"design": {
"graph": {
"blocks": [
{
"id": "ea761b76-2554-46fc-9436-991ee3fd292a",
"type": "basic.input",
"data": {
"name": "clk_i",
"clock": false
},
"position": {
"x": 48,
"y": 208
}
},
{
"id": "02554bef-db6b-4e07-9bf1-478d7995c7b6",
"type": "basic.output",
"data": {
"name": "clk_o"
},
"position": {
"x": 792,
"y": 208
}
},
{
"id": "483a160a-12bb-47e1-94a3-feeb0b5b251d",
"type": "basic.code",
"data": {
"code": "// Connect to system clock (with buffering).\nSB_GB clk_gb (\n .USER_SIGNAL_TO_GLOBAL_BUFFER(clk_input),\n .GLOBAL_BUFFER_OUTPUT(clk_output)\n);\n",
"params": [],
"ports": {
"in": [
{
"name": "clk_input"
}
],
"out": [
{
"name": "clk_output"
}
]
}
},
"position": {
"x": 232,
"y": 168
},
"size": {
"width": 456,
"height": 144
}
}
],
"wires": [
{
"source": {
"block": "ea761b76-2554-46fc-9436-991ee3fd292a",
"port": "out"
},
"target": {
"block": "483a160a-12bb-47e1-94a3-feeb0b5b251d",
"port": "clk_input"
}
},
{
"source": {
"block": "483a160a-12bb-47e1-94a3-feeb0b5b251d",
"port": "clk_output"
},
"target": {
"block": "02554bef-db6b-4e07-9bf1-478d7995c7b6",
"port": "in"
}
}
]
}
}
}
}
}