Parallel to serial shift register 74LS166

Hi guys,
I'm trying to convert a parallel digital data into a serial data. I used 74LS166. Somehow, I got nothing on output pin. Does anybody know why? 
thanx for helping.

Hi Sprooch,
Thank you for posting on this forum.Via the following weblink you go to a page where you can download an example VI for converting hexadecimal-formatted integer data to serial data. This is also called converting parallel data into serial data.
http://zone.ni.com/devzone/cda/epd/p/id/1629  
I hope this answers your question.
Best regards,
Peter S

Similar Messages

  • Questions about shift register

    hello!When I use the shift register,A problem occur!what I want to use is the serial in shift register function,But found only use parallel shift register,someone can give me any suggestions?(The best way has an example of a serial shift register),thanks!!!
    Solved!
    Go to Solution.

    I want to achieve :Each element of the array in the shift register Compare with 5,If less than 5, the output is 1, otherwise 0;but as you can see the vi is wrong ;Error reason is because of the shift register only for computing the entire array but not Single element,any suggestion?
    Attachments:
    the vi.png ‏8 KB
    array.png ‏5 KB

  • What is the maximum number of the parallel blocks or maximum pair of shift register used in FPGA VI time loop with cRIO 9104?

      I am writing a FPGA VI with module cRIO 9104, I need to do a lot of parallel execution of inside a timed loop. In total, I have used 20 pairs of shift registers in the timed loop, which simply means there is 20 parallel exceution across ONE time loop. However, it tells me that there is an over-used of the FPGA resources in the compliation report. One is the Slices and the other is the number 4 of LUTS ( see the attached file), would the compile will be sucessful if I change it to ALL block diagrams cascaded in series without using any shift register accross the timed loop? And do you think that it is reaosnable to have 20 pairs of shift register arranged in parallel inside a timed loop.
      Thank you!
    Attachments:
    afternoon912.jpg ‏2305 KB

    Your compilation report has 2 useful numbers to help answer your question, I'll summarize:
    Number of Slice Flip Flops = 27%
    Number of 4 Input LUT's = 100% *
    You are using the Timed Loop Shift registers to pass a value from one iteration of your loop to the next.  The LabVIEW FPGA compiler will use Slice Flip Flops to create this behavior in the FPGA fabric.  You are only using 27% of the Flip Flops, therefore the 20 Shift Registers are not your problem. 
    LUT's (Look Up Tables), which are the basic logic building block of an FPGA, are your problem.  You are using over 100% of the LUT's in this FPGA.  To fit in this FPGA you will have to reduce the amount of logic (and/or gates, additions, comparisons, etc.) in your design.
    -RB

  • Problems about shift register

    i am using shift register to detect the change of state of my system. --- to detect when the temperature exist the limit, say 50 degree
    therefore, i want to set a constraint that when the past value is below the limit, and the present value is over the limit, the loop is runned and value, time is recoreded.
    My problem is that the system can't run well.
    here is my sample program
    Attachments:
    shift_regiter.vi ‏225 KB

    Hi,
    Yes I did see your eaxample.
    Your inner loop will only ever get one reading if it is inside your limits because it will never exit and therefore your outer loop will never take another reading. Your limit checking needs to be in a parallel loop for it to have a chance to work.
    Regards
    Ray Farmer
    Regards
    Ray Farmer

  • Getting Back Values from Shift Register from Other Loop (FPGA)

    Referring to the picture above, both while loops are inside one while loop (not shown in picture). Problem is im trying to execute the numeric control once only and use the value from the second loop after that. I tried many ways and still have no idea how...could someone help? Thanks in advanced
    Solved!
    Go to Solution.

    augustg,
    You might try using a case structure to route the numeric control into that shift register only on the first iteration of the outer while loop and in all other cases route the output of the case second loops shift register back into the first. Kind of hard to put into words, but something like this:
    The case structure to the right that I added has one additional case "Default". In this case the value from the shift register of the outermost while loop is wired straight through. Hope this helps!
    Nick C | Staff LabVIEW Platform Product Support Engineer | National Instruments

  • Is there a way to save state of shift register for initializing next time vi is started?

    Hello all,
    I've a quick question. I have right now....a numeric constant...starts with "1" intially when starting the vi.
    I use this as a shift register on my main while loop....as the counter to use when the user clicks various items on my vi.  This tracks the order the user wants things to happen later.
    It has now occured to me..that the user might not have selected all possible options, before quitting the vi....and might need to restart it...and begin to select other options...needing to keep place form when he left off last.
    Of course, with how I have it set up no...when the vi is started...the counter is reset to "1".  All the objects on the screen, are in the state it was when it was stopped...objects selected prior to quitting are still selected in the proper order...but if the user starts to select anything unselected..rather than starting at the next count..it starts at 1.
    Is there any way, upon quitting..to set the initialization counter to whatever number was last in the shift register..so that when the vi is started again...it will start up where it left off?
    Thank you in advance,
    cayenne

    I want to clarify. I'm assuming you have a config window or something that you open and close, but you don't actually stop the program? However, if this is your main window and you are stoppping the program then restarting, in reality you should have the program actually exit. The user should never have to press the run arrow in an executable to keep it consistent with other windows applications. It's (generally) confusing to an end user if they click the "x" and their program stays open. Then they have to click an arrow to make it start again. 
    CLA, LabVIEW Versions 2010-2013

  • Shift register versus comparison in while loop

    Hello,
    I have a question regarding the "proper" (i.e. cheaper in terms of system ressources, easier to read, etc)  way of testing the first entry in while loop. One way would be by using a shift register another by detecting if the loop iteration is zero (see the exemples attached here).   I am doing some calculations in this loop, typically 300 iterations or so.
    Which way is better ? Are there other (simpler) waysofdoing this ?
    Thanks
    N
    Attachments:
    while_loop1.png ‏54 KB
    while_loop2.png ‏53 KB

    Express vi's are not entirely evil. And the time delay express vi's are harmless. I have found express vi's to be very useful if I'm trying something new. Besides, once you get everything working the way you want it to you can always open the front panel and clean out any extraneous code that might slow things down. Once you have done that it will perform just like you wrote it yourself.
    PaulG.
    "I enjoy talking to you. Your mind appeals to me. It resembles my own mind except that you happen to be insane." -- George Orwell

  • Why parallel to serial ?

    Hi,
    Version 10204
    I am trying to insert few millions of record from one partition table to another.
    Both tables are declared as parallel .
    select table_name,degree,instances from dba_tables where table_name in ('CI_CUST_INFO_BACKUP_ORIGINAL','CI_CUST_INFO_BACKUP');
    TABLE_NAME                            DEGREE     INSTANCES
    CI_CUST_INFO_BACKUP             8                        1
    CI_CUST_INFO_BACKUP_ORIGINAL       DEFAULT        DEFAULTFor some reason the optimizer choose PARALLEL_TO_SERIAL and not PARALLEL_TO_PARALLEL .
    I expect to see few sessions in v$sessions , but there is just one session running.
    Can one suggest how to make it run in parallel ?
    alter session force parallel dml;
    Session altered.
    alter session force parallel query;
    Session altered.
    INSERT      /*+ append */INTO acrm.ci_cust_info_backup
    SELECT /*+ parallel (p,8) */      *
    FROM acrm.ci_cust_info_backup_original PARTITION (cust_info_backup_def) p;
    Plan
    INSERT STATEMENT  ALL_ROWSCost: 12,135                                     
    7 PX COORDINATOR                                
      6 PX SEND QC (RANDOM) PARALLEL_TO_SERIAL SYS.:TQ10001 :Q1001Cost: 12,135  Bytes: 7,069,977,612  Cardinality: 8,600,946                           
        5 LOAD AS SELECT PARALLEL_COMBINED_WITH_PARENT :Q1001                    
          4 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1001Cost: 12,135  Bytes: 7,069,977,612  Cardinality: 8,600,946                 
            3 PX SEND RANDOM LOCAL PARALLEL_TO_PARALLEL SYS.:TQ10000 :Q1000Cost: 12,135  Bytes: 7,069,977,612  Cardinality: 8,600,946            
              2 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1000Cost: 12,135  Bytes: 7,069,977,612  Cardinality: 8,600,946  Partition #: 6  Partitions accessed #8     
                1 TABLE ACCESS FULL TABLE PARALLEL_COMBINED_WITH_PARENT ACRM.CI_CUST_INFO_BACKUP_ORIGINAL :Q1000Cost: 12,135  Bytes: 7,069,977,612  Cardinality: 8,600,946  Partition #: 7  Partitions accessed #8

    Yoav wrote:
    Hi,
    Version 10204
    I am trying to insert few millions of record from one partition table to another.
    Both tables are declared as parallel .
    For some reason the optimizer choose PARALLEL_TO_SERIAL and not PARALLEL_TO_PARALLEL .
    I expect to see few sessions in v$sessions , but there is just one session running.
    Can one suggest how to make it run in parallel ?Could you please post the formatted output taken from DBMS_XPLAN.DISPLAY, or even better DBMS_XPLAN.DISPLAY_CURSOR?
    You need to understand that every plan at one point will have a parallel to serial - and the plan you've posted shows that the LOAD AS SELECT is run in parallel, and only the top-most parallel operation reports parallel to serial.
    So from a plan perspective the execution should use parallel DML and parallel query.
    Now at runtime there might be reasons why you don't get the degree you've requested so you should also check the session statistics for parallel executions downgraded and statements being executed in parallel:
    select
           s.value
         , n.name
    from
           v$statname n,
           v$sesstat s
    where
           n.statistic# = s.statistic#
    and    (n.name like '%downgrad%' or n.name like '%parallelized%')
    and    s.sid = <qcsid>;Regards,
    Randolf
    Oracle related stuff blog:
    http://oracle-randolf.blogspot.com/
    Co-author of the "OakTable Expert Oracle Practices" book:
    http://www.apress.com/book/view/1430226684
    http://www.amazon.com/Expert-Oracle-Practices-Database-Administration/dp/1430226684

  • How to program shift register to read only when a new user is detected from user?

    Hi,
    I'm currently developing a program for position control in labview. The program is quite simple, whereby user will input the distance that he wants the table to be in the labview program, and labview will send signal to move a motor that will turn a ball screw to move a table horizontally to the targetted position. The criteria is that the profile of the motor depends on the distance it needs to move, whether a two-phase (acceleration and deceleration) or three-phase (acceleration, constant velocity, deceleration) to reach the target position.
    The problem occurs when the user wants to enter a new position (second input) for the table, as the input by user is position the table needs to be but the input required to determine which profile the motor follows depends on the distance that the table will move to get to the targetted position. Therefore, I would need a function to store the input by user temporarily, and recall it only when a new input from user is detected. By this, I would be able to use the difference of the input (input [n+1] - input[n]) and feed it to determine which profile the motor follows and the input by user can be kept as the position he wants the table to travel to (to compare with encoder).
    I thought of using shift registers to do this, but I am not able to make it to perform the deduction ([n+1] - [n]) only when it detects a new input. When i try using shift register, it travels to the targetted position, and one it reaches it will travel back to the original position. For example, when a user input 90, it means the table needs to move to point 90. As the shift register is initialized to 0, it will move to point 90 (90-0 = 90) but upon reaching 90, the shift register sends a signal of 90 (90-90 = 0) and the table returns to it's initial position.
    Is there any way that I can delay the reading of shift register only when a new input is detected or is there another way for me to achieve what i want?
    I've tried searching the discussion forum and ni website but couldn't find similar problems. Thanks for your help in advance.
    Solved!
    Go to Solution.

    Hi,
    I've managed to get what I needed by using a shift register + event structure as suggested by Adnan. However, I face another problem after implementing SR+event. I've attached two files, first the original program and second the updated program using SR + event. (it's only the jpg file as I've forgotten to save the labview program, will upload the program by tomorrow.
    In the original program, I have an elapsed time that is able to run continuously when I run the program. In the updated program, my elapsed time don't seem to run continuously when I run the program (as shown by elapsed time indicator). I need the elapsed time to run continuously as a input to calculate my motor profile.
    I suppose this is caused by the introduction of the event structure, will adding a case structure to wrap the event structure solve the problem or is there another way to get pass this. Appreciate if someone could drop me a pointer or two.
    Thanks
    Attachments:
    Mar 16 - continuous elapsed time.png ‏12 KB
    Mar 16 - elapsed time not continuous after introducing shift register + event structure.png ‏17 KB

  • Using a shift register to detect input...

    Hi guys,
    I'm creating a LabVIEW VI that needs to be able to detect when a user changes an input. I read a previous post that suggested using clusters and shift registers to compare previous data.
    My question is how do I use shift registers? I've created a shift register on a for loop, but I'm not sure when to compare the "previous" data to the "new" data. Do I need to add an element to the left side and compare it there? Is the right side the output? I'm just not sure how it works. An uploaded example would be nice. Thanks.
    -Mike

    Shift registers are very powerful but difficult to use for the first time.
    The shift register you just created has two "arrows", one on either side of the structure. The arrow to the left is the value from the previous (i:th) iteration and the arrow to the right you have to feed with the (i+1)th value.
    Now, if you want to compare values and look for a change you can compare your old value (the one coming out from the left) with the new value in your for loop. The feed your new value to the right arrow so that it becomes the old value for the next iteration.
    If you have many parameters to compare, clusters are very useful since they make things very compact. If you are comparing clusters, do not forget to change the setting on the comparison to compare aggregates (r
    ight click on it and select that option).
    Also, in most cases you need to set the initial (start) value for your shift register. This is done by feeding the left arrow with the default value from the outside of your loop.
    I attached a simple example, CompareSettings.vi, that shows how it works. Hope this helps. /Mikael"
    Attachments:
    comparesettings.vi ‏32 KB

  • [svn:osmf:] 13916: Added DynamicDRMTrait, Composite Unit tests for parallel and serial compositions.

    Revision: 13916
    Revision: 13916
    Author:   [email protected]
    Date:     2010-02-01 16:42:09 -0800 (Mon, 01 Feb 2010)
    Log Message:
    Added DynamicDRMTrait, Composite Unit tests for parallel and serial compositions.  Bug fixes in CompositeDRMTrait.
    Modified Paths:
        osmf/trunk/framework/OSMF/org/osmf/composition/CompositeDRMTrait.as
        osmf/trunk/framework/OSMFTest/org/osmf/OSMFTests.as
        osmf/trunk/framework/OSMFTest/org/osmf/utils/DynamicMediaElement.as
    Added Paths:
        osmf/trunk/framework/OSMFTest/org/osmf/composition/TestParallelElementDRMTrait.as
        osmf/trunk/framework/OSMFTest/org/osmf/composition/TestSerialElementDRMTrait.as
        osmf/trunk/framework/OSMFTest/org/osmf/utils/DynamicDRMTrait.as

  • Error 1 Configuration VIs while Passing Refnum through Shift Register on Mac

    All,
    I am using LabVIEW 2013 SP1 with Mac OS X (Mavericks). I have a simple shift register VI that initializes a .ini file, reads/writes, and closes. I've done this plenty times on windows with no problem. I wrote a quick VI on Mac and I get Error 1. I can't figure out what the problem is. I am attaching my VI. Can somebody shed light on this issue please?
    Kudos always welcome for helpful posts
    Solved!
    Go to Solution.
    Attachments:
    Config File Utility.vi ‏17 KB

    rolfk wrote:
    Keeping the AE in memory is not enough! The Top Level VI in whose hierarchy the Open Config case is executed needs to stay active (eg. not going idle) for as long as you want the open configuration to stay valid. The underlying object where the configuration information is stored in is a queue and that is a refnum like any other refnum in LabVIEW. And all real refnums in LabVIEW (except optionally the VISA ones) will be closed as soon as the top level VI in whose hierarchy the refnum was created/opened goes idle (stops executing).
    Actually even with VISA, "User Data" is lost when the caller goes idle although, VISA will automatically re-open a session identical to the previous session for that alias. Just "User data" isn't preserved in the session history.  Ditto for DAQmx, last session information is externally stored and retrieved (The lookup is by string- so you can coerce a string to VISA Alias or DAQmx I/O container.) the "Session histoy sticks around as long as the VI is in memory.  A trick I learned with an  init all vi call in a TestStand sequence Pre-UUT loop and a model that unloaded the modules when complete.  (I recall I just opened the VI FP "Hidden" as a work around)
    Most NI-Drivers (NI-DMM, NI-Scope etc...) also have this external since really they all use "VISA" down deep (an oversimplification but a good rule of thumb)
    THE EXCEPTION: Software defined instruments.  These act like file refnums and become invalid when the top level vi goes idle. Its the FPGA refnum that dies the sudden death on the "Legacy" drivers. I have not played with "RFmx" and wouldn't mind learning what happens in there.
    And just too really turn it all on its head, There is an LabVIEW Configuration option to "Automatically Close VISA Sessions."  Check that box and the external VISA storage is tossed under the bus so all those sessions you stored on a USR go invalid as soon as the Top Level goes idle
    Some days that can really bug you
    Jeff

  • How do i read the Shift register value of a vi which is written in the teststand sequence from labview exe

    Dear All..
    My Qusetion is ... I have a VI in which I can writ the data to shift register and I can read( Differenent cases). I am Running the VI in write mode to write SAY '100' in the shiftreg( VI will be In teststand Sequence) . And I am reading the VI in read mode using Labview. I am getting the data in labview.
    When i conver my Reading Vi which is having that Read/Write vi in to EXE even then the test stand is writing the data to VI is Unable to reflect in labview.
    Please Help me out with some solution.
    Thanks
    bhargav

    I'm confused by your question:
    Are you trying to transfer data from an Exe to TestStand and vice versa?
    Or are you changing existing, working VIs into EXEs and then wondering why they won't behave the same?
    Can you clarify some what your goal is?
    There may be a better way to do what you want.
    Thanks,
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Why won't my shift register work?!

    I am trying to calculate the volume by multiplying the rate by the time plus the previous volume. The previous volume is the part that I can't figure out. I used a shift register and it's not working.
    Attachments:
    screen shot of program test 12.gif ‏13 KB

    The first thing I notice is that the loop will never exit since the "Loop Done" is never being written to inside the loop.  I'm not seeing what the point of the while loop is.  Are you trying to wait so long until a certain volume is reached and then report it?
    From a general programming view, you should breakup your code into subVIs.  It'll make it a lot simpler to understand.
    I'm also noticing several "multiply by 1" in there.  Those do nothing, get rid of them.
    I also don't see the point in having separate code for the positive and negative flow rates.  The math works the same (V1 = V0 + rate).  The negative will subtract on its own.
    I would convert to a single flow rate.  For instance, if the rate is in ml/h, convert to ml/min inside a case structure and then do the volume calculation after the case structure.  If the rate is in ml/min, just pass the flow rate through the case structure and do the calculation.  This will eliminate duplicate code.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Any way to save data in loop without using shift register or feedback loop

    Hello all
    I was thinking, is it possible to save data in a loop to next iteration without the use of a shift register or a feedback loop?
    I need the possibility to reload data within a loop from a lvm file, but I want to use the same data until i load some new ones.
    The reason why I don't want to use the shift register or feedback node is due to speed, even though I am not sure if the shift register
    actually moves all the data from one register to another, or if it is stationary until a change in the data occur.
    The data I want to reuse is medium-large (6 force measurements, 2 pressure, 1 flow channels)of about 10sec data in each file with samplingsrate of 2kHz..
    In my analysis program I have many CPU demanding calculations and 3D graphs, so I just want to minimize the CPU load as much as I can for each part of the
    software..
    I have attached a small VI to explain what I am talking about.
    I now I shouldn't use the express VI, and I am going to change that as well - this is just a proof of concept! 
    Hope you guys can help me understand this shift register better...
    Thanks!
    - Tommy 
    Running LabVIEW 2009 32bit SP1 on Windows 7 64Bit
    Solved!
    Go to Solution.
    Attachments:
    visual.vi ‏34 KB

    tombech wrote:
    [...]The reason why I don't want to use the shift register or feedback node is due to speed[...]
     Tommy,
    shift register are the fastest you can ever get...........
    Norbert
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

Maybe you are looking for