Coder Social home page Coder Social logo

openmri / ocra Goto Github PK

View Code? Open in Web Editor NEW
36.0 7.0 20.0 36.01 MB

MRI console

Home Page: https://openmri.github.io/ocra/

License: GNU General Public License v3.0

Makefile 0.06% Tcl 2.38% Verilog 4.19% C 31.55% Python 60.24% R 0.02% C++ 0.81% Shell 0.71% MATLAB 0.03%
mri ocra magnetic resonance redpitaya snickerdoodle eclypse-z7

ocra's Introduction

OCRA: The Open Source Console for Realtime Acquisitions

General

This repository contains the seedlings for your very own MRI system. This is all this is, just a seedling. Okay, its a little more, it also contains a tool for controlling AC/DC shim coils.

Seriously though, this repository is mostly code generated back in 2017 to demonstrate that an MRI machine can be built using just a Red Pitaya as control electronics, significantly lowering the entrance threshold for researchers and hobbyists alike. We are trying to provide code to make this more than that as time allows. Certainly, if you like, your input on any aspect of this project is more than welcome!

If you're interested in learning more about getting started with OCRA, check out The OCRA github page.

We also have a blog page about some of the hardware at the The OCRA blog

Its not straight-forward to build the FPGA bitfiles, at least until we provide better documentation. Until then, please find the bitfiles for the tabletop OCRA MRI setups here: Downloadable binaries

How to update Relax 2.0 on your OCRA Tabletop MRI System (RP125-14, RPi 3B+)

Make a backup of the rawdata, imagedata and protocol folder if necessary.

Remove the old relax2 folder completely and replace it with the newest relax2 folder from github.

Remote access the Red Pitaya via ssh and stop the running server.

Copy the relax_server_dev.c file from the updated relax2/server folder to the Red Pitaya, compile it and restart the server afterwards.

More detailed instructions can be found in the relax2/server/README.txt (chapter 1 and 2).

ocra's People

Contributors

davied9 avatar jaystock avatar marcman86 avatar mriphysicist avatar schote avatar tangwd15 avatar twitzelbos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ocra's Issues

An unnecesary log

All the print have one useless "%d" here

printf("Set gradient offsets to 0 0 0 %d\n");

should be fixed to

printf("Set gradient offsets to 0 0 0 %d\n");

Create a UART core for custom serial interfaces routed via the PL

For in-scanner-room applications of Zynq FPGAs, a fiberoptic communications link can be desirable. Implement a basic UART core that can operate a fiber-optic connection via PL GPIO pins and look like a UART to the PS.

Provide full integration with the PS software.

A question about the how to compute pulse width

Hello,

From this line I can see 32 points (64/2 for complex numbers) will get a pulse width of 50us (the lead-in).

But if I pass 60 as duration, from oscilloscope I can get a pulse almost 50us.

I also noticed that tx_devider will affect the width of pulse.

I need to control as prcise as possible for pulse width, so how to compute an precise pulse width here ?

Change the attenuator address

The attenuator uses the address 000 at the moment. This will cause resets sometimes due to SPI bus coupling. When receiving just zeros as data the 000 attenuator reacts when a spike triggers the letch line. The attenuator will set itself to -31.75dB and "no" TX puls will get through. A address like 101 will most likely avoid this. Also a further implementation can allow for communication with more than one attenuator.

The address is set in the server somewhere.

Setup binary validation

Add a target to the Makefile to generate a text file with the md5sums of all the deliverable files
Add a script validate_binaries that will check the files on the redpitaya to make sure their md5sums match

Setup Makefile and Ports to support multiple boards

Make sure the Makefile does

  • check that the selected board is a valid and supported board
  • the project being built is available for this board
  • select the right PART from the board selected

Make sure the projects and board designs

  • specify which boards they support
  • include the correct constraints

Make some examples:

  • blinkenlights should be supported for each board

unreachable code

flipangleDialog.py line 74
Code:
except IOError as e:
print("\tError: required txt file doesn't exist.")
return
print("\tUploaded successfully to server.") <-- unreachable should be above

uninitialized variable

Applications/shim_controller/shim_controller_test.c line 230
Code:
void *cfg, *sts;
vs
rx_cntr = ((uint16_t *)(sts + 0));

More Makefile cleanups

Trim everything unneeded out of the Makefile, fix all the rules, so the builds can continue from where they left off, etc.

Add board support files for Vitis

In order to make full use of platform projects and fsbl generation, it would be helpful to provide the board files for the boards involved in this project.

  • Provide some documentation on how to install them
  • In the documentation also link to the original sources, for cases where these board files exist already

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.