CPU accessible registers in LabView FlexRIO FPGA

Howdy folks, I am wondering if it's possible to get the following behaviors out of Labview.  I'm thinking it's not.
System description:  CVI application that communicates with PXIe FlexRIO via controls and indicators.
Problem: Designing to a CPU-FPGA interface specification which lists "registers" as a combination of read and read/write bit-fields.
Example:
According to the spec, there should be a 32-bit register.  Bits 31:16 are read-only, and bits 15:0 are read/write, from the perspective of the CPU.  In the labview world, I would just make a uint16 control, and a uint16 indicator and be done with it.
However, to meet the spec (written for traditional microprocessor buses), a 32-bit read to an address should read back the full contents of the 32-bitregister at that location (implemented as flops on the FPGA, with appropriate memory mapping within the FPGA device).  Similarly a 32-bit write to an address should store values to that register (appropriately masking writes to bits 31:16 within the FPGA device).
Is there a way for me to have a single address (basically, a single labview block diagram component) that will let me accomplish this behavior?  It looks to me like the only solution is to pack my registers with bit fields that are all read, or all read/write in order to fit in with the labview paradigm.  That means the spec will have to go back and be re-written and re-approved.
Thanks in advance,
-J
Solved!
Go to Solution.

Nathand,
Here is the standard paradigm (some simplification):
1)  C helper file that contains #defines that describe the memory map.  things like BASE_ADDRESS, DEV1_OFFSET, DEV2_OFFSET, REGISTER_1_OFFSET.  To get to a 
2)  C procedure which calls things like void setRegister(uint32 *memory, int device_offset, int register, uint32 new_data, uint32 write_mask).  and uint32 getRegister(int base_address, int device_offset, int register).
3)  If I want to write the value 0xABCD the upper 16 bits of a 32-bit register (register 5), to device #1, I would code:
main(){
   setRegister( ptrMemory, 1, 5, 0xABCD0000, 0x11110000)
This would compute the PCIe address based on some equation like BASE_ADDRESS + DEV1_OFFSET+register_offset<<2 (byte addressed).
Suppose this gives us a 32-bit address of 0xC000_4000.  We would issue a write across PCIe to address 0xC000_4000.  The memory map in the FPGA is programmed such that a set of flops will latch the data in the PCIe write when write_enable = 1, and address 0xC000_4000 are both true. That completes the register write to the FPGA.
A similar thing occurs for a register read.  In this case however, when read_enable = 1 and address = 0xC000_4000, the values held in that same set of flip flops is now written onto the PCIe as a transaction.  The software application recieves the value and returns that value from the getRegister function.
In my example above, you notice that the same address on the PCIe is used for reading and writing. I am trying to understand if I can have software read AND write from the same address.
When you compile an FPGA, labview creates a (seemingly) arbitrary address translation for all CPU accessible structures, meaning FIFOs, controls and indicators.  It assigns different addresses for every single item, and it may or may not keep the same address depending on whether any modifications were done to controls/indicators/fifos since last compile.
I am trying to understand how labview works, so that I can assess whether or not I can read/write from the same address.  This matters, because if I can pack bit fields into registers more efficiently in the FPGA, that reduces the amount of functional tests to write and execute to verify the FPGA functionality.  
So, a restatement of my original question:  is there some mechanism with using controls indicators where both the FPGA AND the CPU can write to the same set of flipflops in the FPGA?   If I use an indicator, the FPGA can write to the indicator but the CPU cannot.  If I use a control, the CPU can write to the control, but the FPGA cannot.  Is this correct?   
-J

Similar Messages

  • Where can I find LabVIEW 2012 FPGA module

    Hi
    I uase LabVIEW 2012. Could you please let me know where can I find LabVIEW 2012 FPGA module to download?

    Where are you entering your serial number?  I am able to simply download it using the webpage:
    EDIT:
    You could also try downloading it with direct links:
    1. NI Downloader for FPGA Module 2012: http://download.ni.com/evaluation/labview/ekit/other/downloader/2012FPGA-Eng_downloader.exe
    2. Installer for FPGA Module 2012: http://download.ni.com/evaluation/labview/ekit/other/downloader/2012FPGA-Eng.exe
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    If someone helped you out, please select their post as the solution and/or give them Kudos!

  • Is there possible to save LabVIEW 2009 +FPGA 2009 source as 8.6 version.?

    Hi,
    I am using Labview 2009+FPGA 2009 development software. But my customer only have the Lv8.6's license. so i hope to know does the source code of LabVIEW 2009  +FPGA 2009 can be saved as 8.6 version? As I know, the labview of 2009 code can be saved to the earlier version. But i am not sure if the FPGA code work or not.

    Hi ivan,
    just try!?
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome

  • LabVIEW 2010 FPGA Driver for Xilinx SPARTAN 3E Starter Board

    Dear Friends,
    Is there any possibility to release a LabVIEW 2010 FPGA Driver for Xilinx SPARTAN 3E Starter Board?
    Regards,
    wedo
    Solved!
    Go to Solution.

    Hi Brad,
    So glad to get your post here!
    I’m looking forward to download the new installer.
    I wonder whether the new driver will support the 10/100 Ethernet Physical Layer Interface, since the last drivers aren’t support this feature!?
    Also, will be any new examples included with the new driver? For instance: an example for the StartaFlash Memory; I have done an example for this but I couldn’t get it work! I don’t know why! You may check my post and the example in the following link!
    http://forums.ni.com/t5/LabVIEW/Spartan-3E-StrataF​lash-Memory-wrong-reading/m-p/1030898
    By the way, is there any plane to develop a driver for the Spartan-3E (1600Kgate) kit? Both kits (500KGate and 1600KGate) have the sample on-board peripherals, the only difference is in the number of Gates (FPGA chip). I think all that is needed is to add the component ID (29597843---->3E1600) and revise the xc3s1600e.bsd and 3sXXXe.nph.
    Thanks in advance & kindest regards,
    wedo

  • LabVIEW / DAQ / FPGA / Vision 基本練習題

    附件是 LabVIEW / DAQ / FPGA / Vision 實機操作的習題,歡迎大家下載多多練習!
    LabVIEW 習題
    DAQ 習題
    FPGA & CompactRIO 習題
    Vision 習題

    Hi Gary,
    My suggestion is to first work from the Vision RIO examples in the example finder.  All of the examples are commented and should at least help you get started.  Also, check out this tutorial on Digital Camera Basics, you will notice many of the concepts talked about here in the code itself.
    http://www.ni.com/white-paper/3287/en
    You are correct in your assumption that the image comes in pixel by pixel and you can read more about the image's construction in the article and see that construction in the example codes.
    Cole R.
    National Instruments
    Applications Engineer

  • Help Labview 2012 FPGA module

    Hi
    I have a project on Spartan 3e with Labview program but I can not install the driver cause of labview 2012 FPGA module
    Thanks

    Hi again 
    Why i can't download the fpga module on this link : http://www.ni.com/download/labview-fpga-module-201​2/3088/en/
    can anyone send me a link to download the module?
    Thanks 

  • DC to DC converter basics using Labview on FPGA Control with VHDL

    DC to DC converter basics using Labview 
    I am fairly a novice, that is why simplifications required, before I begin thanks in advancefor them who will response  
    I am designing a DC to DC (Intermediate Bus Converter, a step down BUCK converter, of 24 v input and output 9 v and 5 amp current output), using FPGA controller, I need to program this using VHDL, for which I take LabVIEW, but as I am new so do not have any idea as what are the steps that I need to take for implementation, what types of function that FPGA does in this so that it can generate 24 v and what other mechanisms that have to control inside or outside of FPGA programming and designing that it can give the desired output voltage, if you have any idea about this then I would be glad to receive the steps that are necessary to complete this

    NI supports two Spartan 3E products through either LabVIEW FPGA or MultiSIM, the Digital Electronics FPGA Board (http://sine.ni.com/nips/cds/view/p/lang/en/nid/207​010) and, if you are in academia, the Xilinx Spartan 3E XUP starter board (as linked by Dennis_Knutson).
    Also note that if you wanted to implement some logic in VHDL and have access to that logic in a LVFPGA diagram, you could utilize the Component-level IP (CLIP) fuctionality (http://zone.ni.com/reference/en-XX/help/371599G-01​/lvfpgaconcepts/using_component_ip/)

  • Fully utilizing all CPU's for a LabVIEW application

    Hi All,
    Have any of you figured out how to harness all of the CPU's in modern machines?
    Backgroud:
    I have an application that does a lot of signal processing and it was pegging the CPU of the machine it was originally deployed on for many minutes.
    As a quick first step we suggested the customer try the application on a new high-end machine. THey did and the preformance improved ...
    BUT...
    When we look at the
    Task Manager >>> Perfomance tab
    it appears we are not not utilizing all of the available CPU's.
    This observation is based on the 8 CPU graphs displayed in the Task Manager.
    The first 4 graphs show very heavy CPU useage but the reamining four graphs show little or no loads.
    I am guessing that this may be due to LV (8.X) using a default of 4 threads for each execution system.
    Since the last time we were on-site, I have looked at
    ...\LabVIEW\vi.lib\utility\sysinfo.llb\threadconfig.vi
    and it appears all I have to do is run that utility one time and save the config as 8 threads for each execution system.
    Now before I send someone back to site, I'd like to find out if someone has traveled this road before me and would like to share their wisdom.
    Thank you,
    Ben
    "Mommy, I want to go FAST!" (Daughter of one of my old girl friends)
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction
    Solved!
    Go to Solution.

    I received a couple of questions concerning this post, so a bit more information to clear things up.
    LabVIEW's Logic
    LabVIEW's default thread creation logic is to create the max of (number of cores, 4). The bug we had is that we inadvertently limited this to four (no humorous comments please ).
    What does the utility do?
    The utility writes some settings to your ini file if different than default. When you run the utility, it displays the number of processors you have in a field at the top. It displays the number of threads being used for each priority in a section below. For a machine with 1-4 cores, the default thread count will be four. For a machine with 8 cores, the default thread count "should" be 8 (and, as of LabVIEW 8.5, it is).
    Roy

  • Labview 2011 FPGA Compile Error

    Hi,
    I'm new to FPGA. I want to use Labview 2011 SP1 with the Spartan 3E starter kit from Xilinx (Spartan 3E driver available from NI labview website).
    I'm trying to work my way through the examples that came with the driver. I've run into the same compiler error with a number of the examples. The error is attached.
    Error 7 occurred at Read from Text File in niFpgaCompileWorker_CheckForErrors.vi->niFpgaCompileWorker_JobComplete.vi->niFpgaCompile_Worker.vi:1
    Possible reason(s):
    LabVIEW:  File not found. The file might have been moved or deleted, or the file path might be incorrectly formatted for the operating system. For example, use \ as path separators on Windows, : on Mac OS X, and / on Linux. Verify that the path is correct using the command prompt or file explorer.
    C:\NIFPGA\compilation\Shift_FPGATarget_Shift_87E8371C\Spartan3EStarter.bld
    I've checked the registry to ensure that the path to the compiler is correct.
    Any assistance would be welcome.
    Regards,
    James.
    Attachments:
    Labview2011_FPGA_CompileError.JPG ‏96 KB

    Hi,
    I don't have any Xilinx tools installed - other than the ones that installed with the Labview FPGA module.
    I have attached the compilation logs and output results from my attempt.
    I have renamed the extension on the following files from .lvtxt to .txt
    BuildResults.txt
    CodeGenerationResults.txt
    Regards,
    James
    Attachments:
    BuildResults.txt ‏5 KB
    XilinxLog.txt ‏42 KB

  • Flexrio FPGA dma and dram simulation

    I have a pair of Flex RIO 7966r boards where I am trying to perform DRAM to DMA transfers.  Each FPGA uses both banks of DRAM.  One bank for capturing Camera Link frames, the other bank for capturing sub-frames from within each frame (And performing some processing on the sub-frame data).
    Each DRAM bank is written into from their own target scopes FIFOs.
    Each DRAM bank is read into their own target-to-host DMA FIFOs.
    When only one side is operating or the other (Capturing sub-frames by themselves or full frames by themselves) everything flows nicely.  But when I capture both at the same time, there appears to be some sort of contention in the DRAM (I suspect from the DMA engine).  Since I am simulating all of this, I would like to ask if anyone has the detailed descriptions of the DRAM interface signals below?  These are generated by LabView but I have found no explanation of what they mean in any documentation.
    Also, in the simulation build, there is obviously a DMA simulation.  But from within the simulator, I can find no signals related to the FPGA based DMA FIFOs or the simulated DMA transfers.  All I can infer about the DMA transfers is the effect on the DRAM above.  The DMA FIFO is being populated directly from the DRAM (Yes, this is a highly modified variant of the 10 tap cameralink (with DRAM) example from the NI-1483 examples).
    Does anyone know how I can see the DMA bahavior from within a simulation?  This would most likely allow me to see exactly why the contention is taking place.
    Thanks!

    Hey xl600,
    I'm not immediately sure how to have ISim display the DMA Engine behavior, but I'll see if I can I dig anything up for you. I've come across a couple of other users encountering issues with FIFO signals appearing in ISim over on the Xilinx forums, so it might be worthwhile to post there as well in case it happens to be due to ISim itself.
    Regards,
    Ryan

  • Windows 8 and Labview 2013 FPGA

    I installed Labview 2013 including the FPGA design suite on a Windows 8 (x64) host. I was surprised to see Windows 8 on the list of supported OS as I was aware that up to this day no Xilinx design suite supported Windows 8.
    But as a matter of fact it didn't took long before I hit:
    ERROR: Simulator:861 - Failed to link the design
    following this tutorial while clicking on check syntax (using one of the VHDL file provided with the tutorial). The error is clearly linked to a lack of Windows 8 compatibility from the XIlinx tools running underneath. Is there a known workaround? Thanks.
    Solved!
    Go to Solution.

    That I could do but Linux is not listed here ... but Windows 8 is listed as supported for the farm server and not for the development environment. Isn't is the other way around? On top of that it looks like we should read GB instead of MB for the farm toolkit.

  • NI LabVIEW 2013 FPGA Module Xilinx Tools 10.1 Download Troubles

    I am trying to download the  Xilinx Tools 10.1 to use with a 9113 chassis in LV2011.  Based on this white paper the compiler below should work just fine.  The problem is I can't get it to download all the way.
    I can't seem to get past ~336MB using the standard or NI downloader.  Any ideas?  Anybody else having this problem?
    http://www.ni.com/download/labview-fpga-module-2013/4249/en/
        thanks,
             -PBD
    Solved!
    Go to Solution.

    Well... on the bright side, you don't want 10.1 anyway!
    Virtex-5 LX50 <- REQUIRES Xilinx 14.4.
    10.1 is only for Virtex-II devices! (...after LabVIEW 2009 that is, just so everyone reading this knows).
    soo.... try this link: http://www.ni.com/download/labview-fpga-module-2013/4248/en/
    Cheers!
    TJ G

  • Need help with read/write to MODBUS RTU registers in Labview 8.0

    I’m trying to write and read the registers in G3800xx016. controlling temperatures and lightning.  Please look at the attached pdf file for this unit..
    I have used Lookout for about three years, and it works fine.. Now I want to expand my system and try to use Labview 8.0
    My temperature register start adress is 100 Hex  (256 dec) I read from Register with Function code 03.
    This register have values from 0-255 witch mean in labview for me as unsigned byte U8
    I read my temperature from the register like this: eks.: 40257 lets say value=5
    Slave    FC       Start Adress     Byte     Value               CRC
    01        03        0100                02        0005                7847   
    This is the status received from the Modbus tester when I use null-modem connection..
    I receive the same value if I use Modscan32
    I have used null-modem cable to read out the values.
    I have also PIR detectors that control movements and light of and on, and I read these starts at 40017.1
    01   03     0010     02    
    The register to switch on and of heating and lights starts at 404097.1  FC16  
    Values mention here is read from Lookout 5.0  
    I have tried examples and read for weeks about this, but everything stops when I try to use Labview 8.0    I can’t read any values from my Master unit, neither write to it, or read any values in Modbus testers when I use null-modem cable.. I have tried different baud rates in my serial connection and it works perfect in Lookout, but Not Labview..
    I have even bought DSC module, but I can’t write to either com ports or Modbus testers..
    Please anybody… is there anybody that can give me help with this??
    Start address for for PIR detectors is 40017.1 (FC03)  and for writing bits for on of to light and heatsystem is 404097.1 (FC16)
    I would be very happy for any idea that can give me some positive results…  Look at the attached pdf file.
    Thanks.. and very best regards from
    Benjii…
    Attachments:
    G3800x016_02-2005_eng.pdf ‏70 KB

    Hi... and thanks for your answer..
    Yes, I have downloaded the NI Modbus drivers.. I have downloaded that one + a lot of other things about Modbus..
    I have also tried communication between lokout and labview true null-modem cable.. and it works..
    I have tried several Modbus examples and I communicate with most of them with null-modem cable.
    I write to the right registers as well, cause I use Modbus scanner to read the information..
    I have used the same settings for serial communication as my Master device use, bust still I can't get any response..
    There was an error message in one of my example from the Modbus INIT module.. Maybe I should try to set up a new connection using VISA ??
    Maybe the problem is to INIT my serial port? I have tried restarting my computer after closing my system..  But still, I have the same problem..
    I hope you can give me any idea...
    Thanks again..  by the way.. is it possible to write and read directly to serial port with the DSC module??  If so.. how?? 
    Very best regards..
    Benjii..

  • Xilinx 10.1 vs 11.5 LabVIEW 2010 FPGA

    I am using LabVIEW 2010, a PXI-8186 controller running LabVIEW Real-Time, and a PXI-7853R FPGA Target. There seems to be an issue with compiling the FPGA code. Without going into all of that detail, as others within the company have taken that route without success, I have another path that I would like to test.
    LabVIEW 2010 defaults to the xilinx 11.5 compiler. Is there a way to tell, force, LabVIEW 2010 to use the xilink 10.1 compile rather than the 11.5 (old versus new compiler)? I do not need a why are you doing that answer. I want to test it to see if there is something in the new compiler that is causing the issues.
    Thank you for any help,
    Bill
    Solved!
    Go to Solution.

    Here is what I did FIRST: put in the installation DVD (Controls and Embedded System Software) and that's what I got to eventually:
    Then I selected the first item and chose to install it. The following pop-up menu followed:
    I pressed Yes and ended up here:
    To be on the safe side, I even selected the Farm Toolkit. Installed, rebooted. It failed.
    The second attempt (guided by NI) was to repair my installation. For this (Windows XP), I used "Add or Remove Programs" and in NI Software I selected the following:
    Repaired (~3hrs) then rebooted. Still does not work. I am waiting for a call back from NI...

  • LabVIEW 2013 Fpga will not compile tutorial solutions

    Y'all
    I am working to get the CRIO evaluation software to compile the tutorial solutions.  so far it will not and complains about missing XILINX_EDK (warning.)  Attached is the xilinx log.     (Do I need to reinstall? or what)
    Thanks for help! 
    Sincerely,
    Paul
    Attachments:
    XilinxLog.txt ‏130 KB

    Hi Paul,
    What version of LabVIEW (2013/2013 SP1), LabVIEW FPGA and Xilinx Compile Tools do you have (or are you compiling on an external server)?
    Which example specifically are you trying to compile? You mentioned tutorials, but I'm not sure exactly what example you are referring to.
    Thanks!
    Xavier
    Applications Engineering Specialist
    National Instruments

Maybe you are looking for

  • Can I partition an external hard drive?

    So like check it homes I b al liek hay nah man I ned 2 partition muh herddrove so eye can enstal windoze? Can dis b dun?

  • Can this be done by just a single query alone ?

    hi , I have the following data id , type1 , duration, status 1 a 2 R 1 a 3 R 1 a 2 I i need to become a single record as follows id , type total , total_R , total I 1 a 7 4 2 partitition by does not allow where clause besides 1st creating a table and

  • Flag multiple shipments attached to delivery note

    Hello, I am new to ABAP and would like help in incorporating the logic for the Update rule. Thank you for hearing me out. The functional requirement is that the quantity is counted multiple times when a destination 'X' is involved in the shipping pro

  • For class.forName()

    Class.forName() method is used in DataBase Connection we cannot trap the returned value why n how it works in DataBase Connection

  • Dolby Digital to stereo mode???????????????

    Hey ,when i watch movies i have dolby digital surround but when i play music its also in a dolby surround and i want it to be in sterteo mode. it seems to have stuck in dolby digital mode ,How di i change that,heard you can download something so you