
05 Jun Embedded Software Engineer (BrainGate)
Embedded Software Engineer (BrainGate)
Brown University and Providence Veterans Affairs Medical Center
The BrainGate research team is developing brain- computer interfaces that will restore communication and upper limb function for people with severe speech and motor impairments, including people with spinal cord injury, stroke, or ALS. Throughout our clinical research, we also conduct fundamental human neuroscience research in movement control, cognition, and attention. Our highly collaborative and multidisciplinary team spans the VA Providence Healthcare System (“VA”), the Brown University School of Medicine, and Massachusetts General Hospital, as well as BrainGate consortium partners at Emory University, Stanford University, and U. C. Davis.
We are seeking an enthusiastic embedded software engineer to enable neural data streaming, processing and data communication in an FPGA-ARM hybrid processing SoC. Working closely with Dr. John Simeral, the incumbent will be responsible for the design, programming, integration and verification testing of software and firmware capabilities of a Xilinx Zynq-7000 embedded system.
ARM coding will involve developing C/C++/Python code on a Cortex-A9 ARM embedded target running Petalinux OS. The incumbent will enable high-volume real-time data flow from the Xilinx FPGA to ARM and through to a variety of peripherals / devices (USB/WiFi, Ethernet UDP, SDCard, Bluetooth HID) for which Linux drivers are in place. Additional ARM software will be created to manage system functions and distribute configurations across various protocols including I2C, UART, SPI, RS-485, UDP, HTTP. ARM software modules / processes will also interface with other BrainGate components including a web- based front-end, WebSocket interfaces, web servers, networked software, serial inputs, and a SQL database with a Python front-end.
The FPGA coding effort will develop Vivado / Vitis processes for Xilinx FPGA programming through Verilog and HLS. BrainGate pipeline operations (currently coded in Simulink and C) will be transformed to Verilog or C / HLS as appropriate. The incumbent will have responsibility for system / software verification and release for test in the BrainGate pilot clinical trial. With the broader consortium team, new machine learning algorithms will be designed and formulated for real-time FPGA instantiation.
The Research Software Engineer will be self-driven, a committed team player, nimble with emerging technologies, highly disciplined in software engineering best practices such as GitHub version control and code review, agile development, verification through simulation, coding standards and documentation. They will guide integration of software features into the broader BrainGate system.
Based with our BrainGate research team on the Brown campus in Providence, this is a three-year fixed- term research position with full benefits and the possibility of extension contingent upon future funding.
Education and Experience:
- Bachelor of Science in Computer/Electrical Engineering, Computer Science or related field required (MS preferred)
- 3+ years software/engineering development experience including Linux / ARM and FPGA programming
Job Competencies
Essential competencies:
- Experience in programming for ARM / embedded
- Proficiency in C/C++ and Python
- Experience in HDL programming (Verilog preferred) and deployment to FPGA or ASIC synthesis
- Fluency in both Windows and Linux/Ubuntu development environments.
- Experience with Xilinx embedded system tools (Vivado, Vitis) for FPGA programming
- Experience with network programming and communication protocols (UART, UDP, I2C, SPI, RS- 485, TCP, WebSockets, ZMQ, JSON)
- Proficiency with source control (GitHub) and/or industry-standard software development environments
- Core knowledge of digital signals and digital sampling
- Familiarity with emerging software technologies and methodologies
- Demonstrable ability to develop accurate, sustainable, well-documented software
- Excellent judgment in making independent engineering decisions in the context of project objectives
- Strong leadership, communication and organizational skills
- Motivated self-starter able to work individually and as a critical member of a high-performance cross-functional team
Preferred competencies:
- Fluency in Matlab, matrix operations
- Experience with Simulink
- Experience building Linux (or variant) OS and configuring boot stages (Uboot, FSBL, FLASH)
- Core knowledge of web protocols, web servers
- Coding experience with microcontrollers (STMicro, etc.)
- Experience with databases (e.g., SQL, MongoDB, queries, table design, JSON/blobs)
- Prior application development for iOS and/or Android
- Working knowledge of dimensionality reduction (e.g, LDA, PCA)
- Experience with neuroscience and electrical brain signals
- Prior work experience in academic research or the medical device industry
- interest or experience in PCB design / schematic capture
Inquiries should be directed to John Simeral, PhD – John_Simeral@brown.edu
Please click here to learn more.
Sorry, the comment form is closed at this time.