Coder Social home page Coder Social logo

lerwys / bpm-sw-old-backup Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 3.0 14.49 MB

Main repository for the BPM firmware and software

License: GNU Lesser General Public License v3.0

Assembly 0.12% C 8.69% VHDL 62.20% C++ 0.53% Python 0.06% Verilog 26.65% Shell 0.03% SystemVerilog 0.90% Fortran 0.02% Tcl 0.13% Stata 0.68%

bpm-sw-old-backup's Introduction

==============================================================================

Repository containing the Beam Position Monitor FPGA firmware and
software.

==============================================================================

Folder Hierarchy organization:

*
|
|-- hdl:
|    |   HDL (Verilog/VHDL) cores related to the BPM.
|    |
|    |-- ip_cores:
|    |    |   Third party reusable modules, primarily Open hardware
|    |    |     modules (http://www.ohwr.org).
|    |    |
|    |    |-- etherbone-core:
|    |    |       Connects two Wishbone buses, either a true hardware bus
|    |    |         or emulated software bus, through Ethernet.
|    |    |-- general-cores (fork from original project):
|    |            General reusable modules.
|    |
|    |-- modules:
|    |    |   Modules specific to BPM hardware.
|    |    |
|    |    |-- custom_common:
|    |    |       Common (reusable) modules to BPM hardware and possibly
|    |    |         to other designs.
|    |    |-- custom_wishbone:
|    |            Wishbone modules to BPM hardware.
|    |
|    |-- platform:
|    |        Platform-specific code, such as Xilinx Chipscope wrappers.
|    |
|    |-- sim:
|    |        Generic simulation files, reusable Bus Functional Modules (BFMs),
|    |          constants definitions.
|    |
|    |-- syn:
|    |        Synthesis specific files (user constraints files and top design
|    |          specification).
|    |
|    |-- testbench:
|    |        Testbenches for modules and top level designs. May use modules
|    |          defined elsewhere (specific within the 'sim" directory).
|    |
|    |-- top:
|             Top design modules.
|
|-- sw:
|    |    Software related to interfacing the BPM carrier board with a PC
|    |      via PCIe.
|    |
|    |-- drivers:
|    |        Linux Kernel code for device drivers
|    |
|    |-- include:
|    |        Header files for device structures and definitions
|    |
|    |-- lib:
|             Utilities and API functions exported by the drivers
|
|-- embedded-sw (based on the original project by Alessandrio Rubini
|    |            and others  <http://www.ohwr.org/projects/wrpc-sw>):
|    |
|    |      Embedded software that runs inside the LM32 softcore processor.
|    |
|    |-- arch:
|    |        Architecture specific code, like linker scripts and boot code.
|    |
|    |-- boards:
|    |        Board specific parameters and initialization.
|    |
|    |-- dev:
|    |        Device specific code, such as UART, GPIO and DMA interfaces
|    |
|    |-- include:
|    |    |   General headers, mostly API device headers.
|    |    |
|    |    |-- hw:
|    |    |       Device specific registers and structures. This definitions
|    |    |         are included by the more general headers located inside
|    |    |         the "include" top directory.
|    |    |
|    |    |-- memmgr:
|    |            Memory pool for "dynamic" allocated memory.
|    |
|    |-- lib:
|    |        Utilities and general functions, such as the memmgr subsystem
|    |          and a printf-like function.
|    |
|    |-- tests:
|    |        Folder dedicated to software testing.
|    |
|    |-- tools:
|    |        General tools for generating RAM loadable file by the firmware
|    |          FPGA.

==============================================================================

Cloning this repository:

This repository makes use of git submodules, located at 'hdl/ip_cores' folder:
  hdl/ip_cores/general-cores
  hdl/ip_cores/etherbone-core

To clone the whole repository use the following command:

  $ git clone --recursive git://github.com/lerwys/bpm-sw.git (read only)
  or
  $ git clone --recursive [email protected]:lerwys/bpm-sw.git (read+write)

For older versions of Git (<1.6.5), use the following:

  $ git clone git://github.com/lerwys/bpm-sw.git
  or
  $ git clone [email protected]:lerwys/bpm-sw.git

  $ git submodule init
  $ git submodule update

To update each submodule within this project use:

  $ git submodule foreach git rebase origin master

==============================================================================

Simulation instructions:

Go to a testbench directory. It must have a top manifest file:
  cd /hdl/testbench/path_to_testbench

Run the following commands. You must have hdlmake2 command available
  in your PATH environment variable.

Create the (ISim) simualation makefile

  $ hdlmake2 --make-isim

Compile the project

  $ make

Create the simulation executable ELF file

  $ make fuse TOP_MODULE=<top_level_testbench_module_without_the_extension>

Execute the simulation with GUI and aditional commands

  $ ./isim_proj -view wave.wcfg -tclbatch isim_cmd -gui

==============================================================================

Synthesis instructions:

Go to a syn directory. It must have a top manifest file:
  cd /hdl/top/path_to_top_design

Run the following commands. You must have hdlmake2 command available
  in your PATH environment variable.

  Create the synthesis makefile and an ISE project

  $ hdlmake2 --make-ise --ise-proj

Compile the source files locally

  $ make local

Load the generated .bit file with iMPACT or other tool

  $ impact

==============================================================================

Known Issues:

wb_fmc150/sim/: This folder containts behavioral simulation models
  for memories (ROMs). However, the xilinx initialization file (.mif)
  paths are absolute to a specific machine! You either have to change
  the path to match your machine or figure a way to specifies a relative
  path (specifiying only the name of the mif file does not work as the
  simulator is not called within this folder). Try a relative path based
  on the simulation folder.

bpm-sw-old-backup's People

Contributors

abyszuk avatar lerwys avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bpm-sw-old-backup's Issues

[pcie-core] Fix missing signal

We should always test our designs before committing it!

/home/lerwys/Repos/bpm-sw-test-pcie/hdl/top/pcie/top_ml605.vhd" Line 183: Formal port/generic <rst_act_low> is not declared in <bpm_pcie_ml605>

[wb_acq_core] Add multiple "simultaneous" acquisition paths

There is a need to have multiple acquisition paths acquiring data simultaneous,
in a multiplexed way.

This is the traditional use case for our case, in that 1 AFC handles 2 BPMs signals.
So, at least we must decouple the acquisition paths from the 2 different BPMs

[fmc516-sw] Support for multiple fmc516 cores (and boards...)

Implement a generic structure to support multiple instances of the fmc516 core, for example.

A simple way would be to create a generic identification structure in which the drive functions would poll in order to determine the correct core (which SPI, I2C, etcc) core to act

Insert CLOCK_DEDICATED_ROUTE=FALSE constraint to .ucf

"The CLOCK_DEDICATED_ROUTE=FALSE workaround is typically for source clocks which are not assigned to global clock input pins -- a completely different problem."

This could be the issue related to driving clock buffers from non GCLK pins.

[soon-to-be fmc-port] Add g_with_bufio and g_with_bufr

This will allow selecting if we want the incoming clock to be routed to BUFIO and/or BUFR primitive. This effectively will clock an IDDR primitive with BUFIO and local FPGA logic with BUFR. Later, all data will be synch'ed to a global reference clock.

Cauting is taken to ensure safe passage from one clock domain to another with Async FIFOs

[ethernet/ebone] Implement mux for ethernet packages?

Would it be viable to implement a mux in order to separate between etherbone packages and
other ones?

This is done for the white rabbit design. Specifically for the wr-core in which etherone packages
are redirect to etherbone and other messages to the rest of the FPGA fabric.

Study this possibility

Replace IBUFGDS to IBUFDS

These are the same primitive, but the former instructs the mapper to use only global clock nets
(GCLK pins). BUT, as we know, we need to use non global clock nets in order to use BUFIO/BUFR primitives.

This possibly causes the error:

"ERROR:Place:1119 - The I/O components "adc_clk1_p_i" and "adc_clk1_n_i" are the
P- and N-sides of a differential I/O pair. The component "adc_clk1_p_i"
needs to be placed in a IOBM site and component "adc_clk1_n_i" in the
adjacent IOBS site within the same I/O tile. The following issue has been
detected:
Some of the logic associated with this structure is locked. This should cause
the rest of the logic to be locked. A problem was found at site BUFR_X0Y3
where we must place IOB adc_clk1_n_i in order to satisfy the relative
placement requirements of this logic. It is not legal to place this component
in this site. "

[ddr3-sdram] phy_init_done never asserted

While perfomring simulation with DDR3 Xilinx Controller and DDR3 model the
"phy_init_done" signal from the controller is never asserted. Thus, causing
the simulation to hang forever

Implement ADC Reset and Reset Clk Div

There is a need to reset the ADCs and the clock output clock reset (for synchronization of
multiple ADC chips).

Also, they need to be software controllable.

Make wb_stream more generic

It would be better if the wishbone streaming interface could be more generic,
allowing data sizes of 16, 32, 64 or 128 bits wide. Moreover, the xwb_source and
xwb_sink modules wouls have to be modified.

Reorganize the dbe_bpm_fmc516 top files

There is a mix in this folder, as this synthesis test is not under development yet!
I think the best way to correct this is to create the synth test in the wb-fmc516-devel branch
and leave it untouched in the other ones.

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.