{"id":5,"date":"2023-03-09T11:17:50","date_gmt":"2023-03-09T16:17:50","guid":{"rendered":"https:\/\/sites.bu.edu\/wisecircuits\/wise-circuits-lab\/"},"modified":"2024-01-05T03:35:06","modified_gmt":"2024-01-05T08:35:06","slug":"wise-circuits-lab","status":"publish","type":"page","link":"https:\/\/sites.bu.edu\/wisecircuits\/","title":{"rendered":"WIRELESS INTEGRATED SYSTEMS AND EXTREME CIRCUITS"},"content":{"rendered":"<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.0.2\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-EVSTQN3\/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC\" crossorigin=\"anonymous\">\n<p><script>\r\n\/\/ canvas settings\r\nvar viewWidth = 768,\r\n    viewHeight = 768,\r\n    drawingCanvas = document.getElementById(\"drawing_canvas\"),\r\n    ctx,\r\n    timeStep = (1\/60),\r\n    time = 0;\r\n\r\nvar nodes = [],\r\n    signals = [];\r\n\r\nvar signalCount = 0;\r\n\r\nwindow.onload = function() {\r\n    initDrawingCanvas();\r\n    createNodes();\r\n    connectNodes();\r\n\r\n    transmit();\r\n    setInterval(transmit, 1500);\r\n\r\n    requestAnimationFrame(loop);\r\n};\r\n\r\nfunction initDrawingCanvas() {\r\n    drawingCanvas.width = viewWidth;\r\n    drawingCanvas.height = viewHeight;\r\n    ctx = drawingCanvas.getContext('2d');\r\n}\r\n\r\nfunction createNodes() {\r\n    var rad = viewWidth * 0.5 - 10;\r\n\r\n    for (var i = 0; i < 300; i++) {\r\n        var q = Math.random() * (Math.PI * 2);\r\n        var r = Math.sqrt(Math.random());\r\n        var x = (rad * r) * Math.cos(q) + viewWidth * 0.5;\r\n        var y = (rad * r) * Math.sin(q) + viewWidth * 0.5;\r\n\r\n        nodes[i] = new Node(x, y);\r\n    }\r\n}\r\n\r\nfunction connectNodes() {\r\n    var connection,\r\n        j,\r\n        connectCount;\r\n\r\n    for (var i = 0; i < nodes.length; i++) {\r\n        j = 0;\r\n\r\n        connectCount = Math.floor(randomRange(3, 6));\r\n\r\n        while (j < connectCount) {\r\n            connection = getRandom(nodes);\r\n\r\n            if (nodes[i] !== connection) {\r\n                nodes[i].connections.push(connection);\r\n                j++;\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction transmit() {\r\n    signals.push(new Signal(getRandom(nodes)));\r\n    signalCount++;\r\n}\r\n\r\nfunction update() {\r\n    nodes.forEach(function(n) {\r\n        n.update();\r\n    });\r\n\r\n    signals.forEach(function(s) {\r\n        if (s.update() === true) {\r\n            signals.splice(signals.indexOf(s), 1);\r\n        }\r\n    });\r\n}\r\n\r\nfunction draw() {\r\n    ctx.clearRect(0, 0, viewWidth, viewHeight);\r\n\r\n    nodes.forEach(function(n) {\r\n        n.draw();\r\n    });\r\n\r\n    signals.forEach(function(s) {\r\n        s.draw();\r\n    });\r\n}\r\n\r\nfunction loop() {\r\n    update();\r\n    draw();\r\n    time += timeStep;\r\n    requestAnimationFrame(loop);\r\n}\r\n\r\nfunction Node(x, y) {\r\n    this.x = this._x = x;\r\n    this.y = this._y = y;\r\n\r\n    this.connections = [];\r\n\r\n    this.r = randomRange(-10, 10);\r\n}\r\nNode.prototype = {\r\n    update:function() {\r\n        this.x = this._x + Math.sin(time) * this.r;\r\n        this.y = this._y + Math.cos(time) * this.r;\r\n    },\r\n    draw:function() {\r\n        ctx.strokeStyle = '#fff';\r\n        ctx.fillStyle = '#fff';\r\n        ctx.lineWidth = 0.05;\r\n\r\n        ctx.fillRect(this.x, this.y, 1, 1);\r\n\r\n        for (var i = 0; i < this.connections.length; i++) {\r\n            ctx.beginPath();\r\n            ctx.moveTo(this.x, this.y);\r\n            ctx.lineTo(this.connections[i].x, this.connections[i].y);\r\n            ctx.stroke();\r\n        }\r\n    }\r\n};\r\n\r\nfunction Signal(start) {\r\n    this.start = start;\r\n    this.parts = [];\r\n    this.completeParts = [];\r\n    this.strength = 4.0;\r\n    this.jumps = 0;\r\n    \r\n    var tint = (signalCount % 12) * 30;\r\n    \/\/ var tint = Math.floor(Math.random() * 360);\r\n    console.log(tint);\r\n    this.style = 'hsl(' + tint + ',100%,50%)';\r\n\r\n    for (var i = 0; i < start.connections.length; i++) {\r\n        this.parts.push(new SignalPart(this.start, this.start.connections[i], this.strength, this.style));\r\n    }\r\n}\r\nSignal.prototype = {\r\n    update:function() {\r\n        var complete = false;\r\n        this.completeParts.length = 0;\r\n\r\n        for (var i = this.parts.length - 1; i >= 0; i--) {\r\n            this.parts[i].time += timeStep;\r\n\r\n            if (this.parts[i].complete) {\r\n                this.completeParts.push(this.parts.splice(i, 1)[0]);\r\n            }\r\n        }\r\n        \r\n        if (this.completeParts.length > 0) {\r\n            this.jumps++;\r\n            this.strength--;\r\n            complete = this.jumps === 3;\r\n        }\r\n      \r\n        if (complete === false) {\r\n            var part,\r\n              end,\r\n              connection;\r\n\r\n            for (var j = 0; j < this.completeParts.length; j++) {\r\n                part = this.completeParts[j];\r\n                end = part.end;\r\n\r\n                for (var k = 0; k < end.connections.length; k++) {\r\n                    connection = end.connections[k];\r\n\r\n                    this.parts.push(new SignalPart(end, connection, this.strength, this.style));\r\n                }\r\n            }\r\n        }\r\n      \r\n        return complete;\r\n    },\r\n    draw:function() {\r\n        for (var i = 0; i < this.parts.length; i++) {\r\n            this.parts[i].draw();\r\n        }\r\n    }\r\n};\r\n\r\nfunction SignalPart(start, end, strength, style) {\r\n    this.start = start;\r\n    this.end = end;\r\n    this.strength = strength;\r\n    this.style = style;\r\n    this._time = 0;\r\n    this.prevTime = 0;\r\n    this.duration = 2;\r\n    this.complete = false;\r\n\r\n    this.p0 = {x:0, y:0};\r\n    this.p1 = {x:0, y:0};\r\n}\r\nSignalPart.prototype = {\r\n    set time(v) {\r\n        this.prevTime = this._time;\r\n        this._time = v >= this.duration ? this.duration : v;\r\n        this.complete = this._time === this.duration;\r\n    },\r\n    get time() {\r\n        return this._time;\r\n    },\r\n    draw:function() {\r\n        var t0 = Ease.outCubic(this.prevTime, 0, 1, this.duration);\r\n        var t1 = Ease.outQuad(this.time, 0, 1, this.duration);\r\n        lerp(this.start, this.end, t0, this.p0);\r\n        lerp(this.start, this.end, t1, this.p1);\r\n\r\n        ctx.strokeStyle = this.style;\r\n        ctx.lineWidth = this.strength * 0.25;\r\n        ctx.lineCap = 'round';\r\n        ctx.beginPath();\r\n        ctx.moveTo(this.p0.x, this.p0.y);\r\n        ctx.lineTo(this.p1.x, this.p1.y);\r\n        ctx.stroke();\r\n    }\r\n};\r\n\r\n\r\n\r\nfunction randomRange(min, max) {\r\n    return min + Math.random() * (max - min);\r\n}\r\n\r\nfunction getRandom(a) {\r\n    return a[Math.floor(Math.random() * a.length)];\r\n}\r\n\r\nfunction lerp(n1, n2, t, p) {\r\n    p = p || {x:0, y:0};\r\n\r\n    p.x = n1.x + t * (n2.x - n1.x);\r\n    p.y = n1.y + t * (n2.y - n1.y);\r\n\r\n    return p;\r\n}\r\n\r\n\/**\r\n * easing equations from http:\/\/gizma.com\/easing\/\r\n * t = current time\r\n * b = start value\r\n * c = delta value\r\n * d = duration\r\n *\/\r\nvar Ease = {\r\n    inCubic:function (t, b, c, d) {\r\n        t \/= d;\r\n        return c*t*t*t + b;\r\n    },\r\n    outCubic:function(t, b, c, d) {\r\n        t \/= d;\r\n        t--;\r\n        return c*(t*t*t + 1) + b;\r\n    },\r\n    inQuad: function (t, b, c, d) {\r\n        return c*(t\/=d)*t + b;\r\n    },\r\n    outQuad: function (t, b, c, d) {\r\n        return -c *(t\/=d)*(t-2) + b;\r\n    },\r\n    inOutCubic:function(t, b, c, d) {\r\n        t \/= d\/2;\r\n        if (t < 1) return c\/2*t*t*t + b;\r\n        t -= 2;\r\n        return c\/2*(t*t*t + 2) + b;\r\n    }\r\n};\r\n\r\n<\/script><\/p>\n<style>\n#drawing_canvas {\n    position: absolute;\n    margin: auto;\n    width: 768px;\n    height: 768px;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n}\n<\/style>\n<p><canvas id=\"drawing_canvas\"><\/canvas><\/p>\n<hr>\n<div class=\"row text-center strong\">\n<h3 class=\"text-black-90\"><strong>Team<\/strong><\/h3>\n<\/div>\n<hr>\n<div class=\"row\">\n<img class=\"img-fluid\" src=\"\/wisecircuits\/files\/2023\/03\/WISE_updated_2-scaled.jpg\"\/>\n<\/div>\n<hr>\n<div class=\"row text-center strong\">\n<h3><strong>Research Areas<\/strong><\/h3>\n<\/div>\n<hr>\n<div class=\"row row-cols-1 row-cols-md-3 g-4\">\n<div class=\"col\">\n<div class=\"card h-100\">\n        <img src=\"https:\/\/sites.bu.edu\/wisecircuits\/files\/2024\/01\/IMG20210309161219-1536x1278.png\" class=\"card-img-top\" alt=\"...\"><\/p>\n<div class=\"card-body\">\n<h6 class=\"card-title\"><strong>Cyber-Secure Biological Systems<\/strong><\/h6>\n<p align=\"justify\" class=\"card-text\">Hybrid bio-electronic systems are rapidly becoming a crucial technology to help address societal challenges in healthcare and environmental monitoring. We are creating cyber-secure biological systems (CSBS) that combine CMOS electronics\u2019 reliability and communication abilities with engineered living sensors and their unique ability to sense and report on the environment. <\/p>\n<p>          <span style=\"color: #ff0000;\"><button type=\"button\" class=\"btn btn-danger\"><a href=\"https:\/\/sites.bu.edu\/wisecircuits\/cyber-biological-systems\/\" style=\"text-decoration: none; color: #fff;\">Read More<\/a><\/button><\/span>\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"col\">\n<div class=\"card h-100\">\n        <img src=\"\/wisecircuits\/files\/2023\/03\/GRAND_die_on-PCB-3-e1678730360150-636x569.jpg\" class=\"card-img-top\" alt=\"...\"><\/p>\n<div class=\"card-body\">\n<h6 class=\"card-title\"><strong>All-in-One Data Decoders<\/strong><\/h6>\n<p align=\"justify\" class=\"card-text\">Guessing Random Additive Noise Decoding (GRAND) is the first universal decoding method that is agnostic to the code structure as it aims to identify the noise effect that has impacted the data. Because of the universal nature of GRAND, it allows efficient decoding of a variety of different codes and rates in a single hardware instantiation. The exploration of the use of different codes, including heretofore un-decodable ones, e.g., Random Linear Codes (RLCs), is an interesting facet of GRAND. We are developing all-in-one data decoders using the GRAND algorithm and its variants while achieving ultra-low energy consumption and low latency.\n <\/p>\n<p>          <span style=\"color: #ff0000;\"><button type=\"button\" class=\"btn btn-danger\"><a href=\"https:\/\/sites.bu.edu\/wisecircuits\/all-in-one-data-decoders\/\" style=\"text-decoration: none; color: #fff;\">Read More<\/a><\/button><\/span>\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"col\">\n<div class=\"card h-100\">\n        <img src=\"\/wisecircuits\/files\/2024\/01\/chip_fig_v2-1.png\" class=\"card-img-top\" alt=\"...\"><\/p>\n<div class=\"card-body\">\n<h6 class=\"card-title\"><strong>Secure Wireless Communications<\/strong><\/h6>\n<p align=\"justify\" class=\"card-text\">Security is paramount and given hard resource constraints on energy, computation, and size, securing low-power intelligent sensing and communication systems cannot solely rely on cryptographic mechanisms. Security needs to be systemically addressed for these systems, particularly at the physical-layer-design level, not just as an afterthought in software. We are designing energy-efficient wireless systems with embedded analog\/RF physical-layer security that go beyond the traditional cryptography-based approaches. <\/p>\n<p>          <span style=\"color: #ff0000;\"><button type=\"button\" class=\"btn btn-danger\"><a href=\"https:\/\/sites.bu.edu\/wisecircuits\/secure-wireless-communication\/\" style=\"text-decoration: none; color: #fff;\">Read More<\/a><\/button><\/span>\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<hr>\n","protected":false},"excerpt":{"rendered":"<p>Team Research Areas Cyber-Secure Biological Systems Hybrid bio-electronic systems are rapidly becoming a crucial technology to help address societal challenges in healthcare and environmental monitoring. We are creating cyber-secure biological systems (CSBS) that combine CMOS electronics\u2019 reliability and communication abilities with engineered living sensors and their unique ability to sense and report on the environment. [&hellip;]<\/p>\n","protected":false},"author":22239,"featured_media":0,"parent":0,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"page-templates\/no-sidebars.php","meta":[],"_links":{"self":[{"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/pages\/5"}],"collection":[{"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/users\/22239"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":50,"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/pages\/5\/revisions"}],"predecessor-version":[{"id":433,"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/pages\/5\/revisions\/433"}],"wp:attachment":[{"href":"https:\/\/sites.bu.edu\/wisecircuits\/wp-json\/wp\/v2\/media?parent=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}