Ignore:
Timestamp:
09/22/10 18:08:06 (16 years ago)
Author:
weitzel
Message:
FTU RS485 interface is now connected to main control
File:
1 edited

Legend:

Unmodified
Added
Removed
  • firmware/FTU/FTU_top_tb.vhd

    r9928 r9939  
    194194    );
    195195 
    196   -- Clock process definitions
     196  -- Stimulus process for clock
    197197  ext_clk_proc: process
    198198  begin
     
    203203  end process ext_clk_proc;
    204204 
    205   -- Stimulus process
    206   stim_proc: process
     205  -- Stimulus process for trigger
     206  trigger_proc: process
    207207  begin
    208208    ---------------------------------------------------------------------------
     
    236236    wait for 5ns;
    237237    trigger_sig <= '0';
    238     ---------------------------------------------------------------------------
    239     -- test now RS485
    240     ---------------------------------------------------------------------------
    241     wait for 100us;
    242     rx <= '0'; --start bit
    243     wait for baud_rate_period;
    244     rx <= '0'; --start delimiter bit 0
    245     wait for baud_rate_period;
    246     rx <= '0'; --start delimiter bit 1
    247     wait for baud_rate_period;
    248     rx <= '0'; --start delimiter bit 2
    249     wait for baud_rate_period;
    250     rx <= '0'; --start delimiter bit 3
    251     wait for baud_rate_period;
    252     rx <= '0'; --start delimiter bit 4
    253     wait for baud_rate_period;
    254     rx <= '0'; --start delimiter bit 5
    255     wait for baud_rate_period;
    256     rx <= '1'; --start delimiter bit 6
    257     wait for baud_rate_period;
    258     rx <= '0'; --start delimiter bit 7
    259     wait for baud_rate_period;
    260     rx <= '1'; --stop bit
    261     wait for baud_rate_period;
    262     rx <= '1'; --stop bit
    263     wait for baud_rate_period;
    264     ---------------------------------------------------------------------------
     238    wait for 1430us;
     239    trigger_sig <= '1';
     240    wait for 5ns;
     241    trigger_sig <= '0';
     242    wait for 400us;
     243    trigger_sig <= '1';
     244    wait for 5ns;
     245    trigger_sig <= '0';
     246    wait;   
     247  end process trigger_proc;
     248
     249  -- Stimulus process for RS485
     250  rs485_proc: process
     251   
     252    procedure assign_rs485 (data: std_logic_vector(7 downto 0)) is
     253    begin
     254      rx <= '0'; --start bit
     255      wait for baud_rate_period;
     256      rx <= data(0); --bit 0
     257      wait for baud_rate_period;
     258      rx <= data(1); --bit 1
     259      wait for baud_rate_period;
     260      rx <= data(2); --bit 2
     261      wait for baud_rate_period;
     262      rx <= data(3); --bit 3
     263      wait for baud_rate_period;
     264      rx <= data(4); --bit 4
     265      wait for baud_rate_period;
     266      rx <= data(5); --bit 5
     267      wait for baud_rate_period;
     268      rx <= data(6); --bit 6
     269      wait for baud_rate_period;
     270      rx <= data(7); --bit 7
     271      wait for baud_rate_period;
     272      rx <= '1'; --stop bit
     273      wait for baud_rate_period;
     274      rx <= '1'; --stop bit
     275      wait for baud_rate_period;
     276    end assign_rs485;
     277   
     278  begin
     279    ---------------------------------------------------------------------------
     280    -- wait until FTU is initialized
     281    ---------------------------------------------------------------------------
     282    wait for 150us;
     283    ---------------------------------------------------------------------------
     284    -- test one RS485 command (16 byte)
     285    ---------------------------------------------------------------------------
     286    assign_rs485("01000000"); --start delimiter
    265287    wait for 1us;
    266     rx <= '0'; --start bit
    267     wait for baud_rate_period;
    268     rx <= '0'; --FTU address bit 0
    269     wait for baud_rate_period;
    270     rx <= '0'; --FTU address bit 1
    271     wait for baud_rate_period;
    272     rx <= '0'; --FTU address bit 2
    273     wait for baud_rate_period;
    274     rx <= '0'; --FTU address bit 3
    275     wait for baud_rate_period;
    276     rx <= '0'; --FTU address bit 4
    277     wait for baud_rate_period;
    278     rx <= '0'; --FTU address bit 5
    279     wait for baud_rate_period;
    280     rx <= '0'; --FTU address bit 6
    281     wait for baud_rate_period;
    282     rx <= '0'; --FTU address bit 7
    283     wait for baud_rate_period;
    284     rx <= '1'; --stop bit
    285     wait for baud_rate_period;
    286     rx <= '1'; --stop bit
    287     wait for baud_rate_period;
    288     ---------------------------------------------------------------------------
     288    assign_rs485("00000000"); --FTU address
    289289    wait for 10ns;
    290     rx <= '0'; --start bit
    291     wait for baud_rate_period;
    292     rx <= '0'; --FTM address bit 0
    293     wait for baud_rate_period;
    294     rx <= '0'; --FTM address bit 1
    295     wait for baud_rate_period;
    296     rx <= '0'; --FTM address bit 2
    297     wait for baud_rate_period;
    298     rx <= '0'; --FTM address bit 3
    299     wait for baud_rate_period;
    300     rx <= '0'; --FTM address bit 4
    301     wait for baud_rate_period;
    302     rx <= '0'; --FTM address bit 5
    303     wait for baud_rate_period;
    304     rx <= '1'; --FTM address bit 6
    305     wait for baud_rate_period;
    306     rx <= '1'; --FTM address bit 7
    307     wait for baud_rate_period;
    308     rx <= '1'; --stop bit
    309     wait for baud_rate_period;
    310     rx <= '1'; --stop bit
    311     wait for baud_rate_period;
    312     ---------------------------------------------------------------------------
    313     wait for 100ns;
    314     rx <= '0'; --start bit
    315     wait for baud_rate_period;
    316     rx <= '0'; --instruction bit 0
    317     wait for baud_rate_period;
    318     rx <= '1'; --instruction bit 1
    319     wait for baud_rate_period;
    320     rx <= '0'; --instruction bit 2
    321     wait for baud_rate_period;
    322     rx <= '0'; --instruction bit 3
    323     wait for baud_rate_period;
    324     rx <= '0'; --instruction bit 4
    325     wait for baud_rate_period;
    326     rx <= '0'; --instruction bit 5
    327     wait for baud_rate_period;
    328     rx <= '0'; --instruction bit 6
    329     wait for baud_rate_period;
    330     rx <= '0'; --instruction bit 7
    331     wait for baud_rate_period;
    332     rx <= '1'; --stop bit
    333     wait for baud_rate_period;
    334     rx <= '1'; --stop bit
    335     wait for baud_rate_period;
    336     ---------------------------------------------------------------------------
     290    assign_rs485("11000000"); --FTM address
     291    wait for 100ns;
     292    assign_rs485("00000000"); --instruction
    337293    wait for 200us;
    338     rx <= '0'; --start bit
    339     wait for baud_rate_period;
    340     rx <= '0'; --data1 bit 0
    341     wait for baud_rate_period;
    342     rx <= '0'; --data1 bit 1
    343     wait for baud_rate_period;
    344     rx <= '0'; --data1 bit 2
    345     wait for baud_rate_period;
    346     rx <= '0'; --data1 bit 3
    347     wait for baud_rate_period;
    348     rx <= '0'; --data1 bit 4
    349     wait for baud_rate_period;
    350     rx <= '0'; --data1 bit 5
    351     wait for baud_rate_period;
    352     rx <= '0'; --data1 bit 6
    353     wait for baud_rate_period;
    354     rx <= '0'; --data1 bit 7
    355     wait for baud_rate_period;
    356     rx <= '1'; --stop bit
    357     wait for baud_rate_period;
    358     rx <= '1'; --stop bit
    359     wait for baud_rate_period;
    360     ---------------------------------------------------------------------------
    361     wait for 100ns;
    362     rx <= '0'; --start bit
    363     wait for baud_rate_period;
    364     rx <= '0'; --data2 bit 0
    365     wait for baud_rate_period;
    366     rx <= '0'; --data2 bit 1
    367     wait for baud_rate_period;
    368     rx <= '0'; --data2 bit 2
    369     wait for baud_rate_period;
    370     rx <= '0'; --data2 bit 3
    371     wait for baud_rate_period;
    372     rx <= '0'; --data2 bit 4
    373     wait for baud_rate_period;
    374     rx <= '0'; --data2 bit 5
    375     wait for baud_rate_period;
    376     rx <= '0'; --data2 bit 6
    377     wait for baud_rate_period;
    378     rx <= '0'; --data2 bit 7
    379     wait for baud_rate_period;
    380     rx <= '1'; --stop bit
    381     wait for baud_rate_period;
    382     rx <= '1'; --stop bit
    383     wait for baud_rate_period;
    384     ---------------------------------------------------------------------------
    385     wait for 100ns;
    386     rx <= '0'; --start bit
    387     wait for baud_rate_period;
    388     rx <= '0'; --data3 bit 0
    389     wait for baud_rate_period;
    390     rx <= '0'; --data3 bit 1
    391     wait for baud_rate_period;
    392     rx <= '0'; --data3 bit 2
    393     wait for baud_rate_period;
    394     rx <= '0'; --data3 bit 3
    395     wait for baud_rate_period;
    396     rx <= '0'; --data3 bit 4
    397     wait for baud_rate_period;
    398     rx <= '0'; --data3 bit 5
    399     wait for baud_rate_period;
    400     rx <= '0'; --data3 bit 6
    401     wait for baud_rate_period;
    402     rx <= '0'; --data3 bit 7
    403     wait for baud_rate_period;
    404     rx <= '1'; --stop bit
    405     wait for baud_rate_period;
    406     rx <= '1'; --stop bit
    407     wait for baud_rate_period;
    408     ---------------------------------------------------------------------------
    409     wait for 100ns;
    410     rx <= '0'; --start bit
    411     wait for baud_rate_period;
    412     rx <= '0'; --data4 bit 0
    413     wait for baud_rate_period;
    414     rx <= '0'; --data4 bit 1
    415     wait for baud_rate_period;
    416     rx <= '0'; --data4 bit 2
    417     wait for baud_rate_period;
    418     rx <= '0'; --data4 bit 3
    419     wait for baud_rate_period;
    420     rx <= '0'; --data4 bit 4
    421     wait for baud_rate_period;
    422     rx <= '0'; --data4 bit 5
    423     wait for baud_rate_period;
    424     rx <= '0'; --data4 bit 6
    425     wait for baud_rate_period;
    426     rx <= '0'; --data4 bit 7
    427     wait for baud_rate_period;
    428     rx <= '1'; --stop bit
    429     wait for baud_rate_period;
    430     rx <= '1'; --stop bit
    431     wait for baud_rate_period;
    432     ---------------------------------------------------------------------------
    433     wait for 100ns;
    434     rx <= '0'; --start bit
    435     wait for baud_rate_period;
    436     rx <= '0'; --data5 bit 0
    437     wait for baud_rate_period;
    438     rx <= '0'; --data5 bit 1
    439     wait for baud_rate_period;
    440     rx <= '0'; --data5 bit 2
    441     wait for baud_rate_period;
    442     rx <= '0'; --data5 bit 3
    443     wait for baud_rate_period;
    444     rx <= '0'; --data5 bit 4
    445     wait for baud_rate_period;
    446     rx <= '0'; --data5 bit 5
    447     wait for baud_rate_period;
    448     rx <= '0'; --data5 bit 6
    449     wait for baud_rate_period;
    450     rx <= '0'; --data5 bit 7
    451     wait for baud_rate_period;
    452     rx <= '1'; --stop bit
    453     wait for baud_rate_period;
    454     rx <= '1'; --stop bit
    455     wait for baud_rate_period;
    456     ---------------------------------------------------------------------------
    457     wait for 100ns;
    458     rx <= '0'; --start bit
    459     wait for baud_rate_period;
    460     rx <= '0'; --data6 bit 0
    461     wait for baud_rate_period;
    462     rx <= '0'; --data6 bit 1
    463     wait for baud_rate_period;
    464     rx <= '0'; --data6 bit 2
    465     wait for baud_rate_period;
    466     rx <= '0'; --data6 bit 3
    467     wait for baud_rate_period;
    468     rx <= '0'; --data6 bit 4
    469     wait for baud_rate_period;
    470     rx <= '0'; --data6 bit 5
    471     wait for baud_rate_period;
    472     rx <= '0'; --data6 bit 6
    473     wait for baud_rate_period;
    474     rx <= '0'; --data6 bit 7
    475     wait for baud_rate_period;
    476     rx <= '1'; --stop bit
    477     wait for baud_rate_period;
    478     rx <= '1'; --stop bit
    479     wait for baud_rate_period;
    480     ---------------------------------------------------------------------------
    481     wait for 100ns;
    482     rx <= '0'; --start bit
    483     wait for baud_rate_period;
    484     rx <= '0'; --data7 bit 0
    485     wait for baud_rate_period;
    486     rx <= '0'; --data7 bit 1
    487     wait for baud_rate_period;
    488     rx <= '0'; --data7 bit 2
    489     wait for baud_rate_period;
    490     rx <= '0'; --data7 bit 3
    491     wait for baud_rate_period;
    492     rx <= '0'; --data7 bit 4
    493     wait for baud_rate_period;
    494     rx <= '0'; --data7 bit 5
    495     wait for baud_rate_period;
    496     rx <= '0'; --data7 bit 6
    497     wait for baud_rate_period;
    498     rx <= '0'; --data7 bit 7
    499     wait for baud_rate_period;
    500     rx <= '1'; --stop bit
    501     wait for baud_rate_period;
    502     rx <= '1'; --stop bit
    503     wait for baud_rate_period;
    504     ---------------------------------------------------------------------------
    505     wait for 100ns;
    506     rx <= '0'; --start bit
    507     wait for baud_rate_period;
    508     rx <= '0'; --data8 bit 0
    509     wait for baud_rate_period;
    510     rx <= '0'; --data8 bit 1
    511     wait for baud_rate_period;
    512     rx <= '0'; --data8 bit 2
    513     wait for baud_rate_period;
    514     rx <= '0'; --data8 bit 3
    515     wait for baud_rate_period;
    516     rx <= '0'; --data8 bit 4
    517     wait for baud_rate_period;
    518     rx <= '0'; --data8 bit 5
    519     wait for baud_rate_period;
    520     rx <= '0'; --data8 bit 6
    521     wait for baud_rate_period;
    522     rx <= '0'; --data8 bit 7
    523     wait for baud_rate_period;
    524     rx <= '1'; --stop bit
    525     wait for baud_rate_period;
    526     rx <= '1'; --stop bit
    527     wait for baud_rate_period;
    528     ---------------------------------------------------------------------------
    529     wait for 100ns;
    530     rx <= '0'; --start bit
    531     wait for baud_rate_period;
    532     rx <= '0'; --data9 bit 0
    533     wait for baud_rate_period;
    534     rx <= '0'; --data9 bit 1
    535     wait for baud_rate_period;
    536     rx <= '0'; --data9 bit 2
    537     wait for baud_rate_period;
    538     rx <= '0'; --data9 bit 3
    539     wait for baud_rate_period;
    540     rx <= '0'; --data9 bit 4
    541     wait for baud_rate_period;
    542     rx <= '0'; --data9 bit 5
    543     wait for baud_rate_period;
    544     rx <= '0'; --data9 bit 6
    545     wait for baud_rate_period;
    546     rx <= '0'; --data9 bit 7
    547     wait for baud_rate_period;
    548     rx <= '1'; --stop bit
    549     wait for baud_rate_period;
    550     rx <= '1'; --stop bit
    551     wait for baud_rate_period;
    552     ---------------------------------------------------------------------------
    553     wait for 100ns;
    554     rx <= '0'; --start bit
    555     wait for baud_rate_period;
    556     rx <= '0'; --data10 bit 0
    557     wait for baud_rate_period;
    558     rx <= '0'; --data10 bit 1
    559     wait for baud_rate_period;
    560     rx <= '0'; --data10 bit 2
    561     wait for baud_rate_period;
    562     rx <= '0'; --data10 bit 3
    563     wait for baud_rate_period;
    564     rx <= '0'; --data10 bit 4
    565     wait for baud_rate_period;
    566     rx <= '0'; --data10 bit 5
    567     wait for baud_rate_period;
    568     rx <= '0'; --data10 bit 6
    569     wait for baud_rate_period;
    570     rx <= '0'; --data10 bit 7
    571     wait for baud_rate_period;
    572     rx <= '1'; --stop bit
    573     wait for baud_rate_period;
    574     rx <= '1'; --stop bit
    575     wait for baud_rate_period;
    576     ---------------------------------------------------------------------------
    577     wait for 100ns;
    578     rx <= '0'; --start bit
    579     wait for baud_rate_period;
    580     rx <= '0'; --data11 bit 0
    581     wait for baud_rate_period;
    582     rx <= '0'; --data11 bit 1
    583     wait for baud_rate_period;
    584     rx <= '0'; --data11 bit 2
    585     wait for baud_rate_period;
    586     rx <= '0'; --data11 bit 3
    587     wait for baud_rate_period;
    588     rx <= '0'; --data11 bit 4
    589     wait for baud_rate_period;
    590     rx <= '0'; --data11 bit 5
    591     wait for baud_rate_period;
    592     rx <= '0'; --data11 bit 6
    593     wait for baud_rate_period;
    594     rx <= '0'; --data11 bit 7
    595     wait for baud_rate_period;
    596     rx <= '1'; --stop bit
    597     wait for baud_rate_period;
    598     rx <= '1'; --stop bit
    599     wait for baud_rate_period;
    600     ---------------------------------------------------------------------------
    601     wait for 100ns;
    602     rx <= '0'; --start bit
    603     wait for baud_rate_period;
    604     rx <= '0'; --check sum bit 0
    605     wait for baud_rate_period;
    606     rx <= '0'; --check sum bit 1
    607     wait for baud_rate_period;
    608     rx <= '0'; --check sum bit 2
    609     wait for baud_rate_period;
    610     rx <= '0'; --check sum bit 3
    611     wait for baud_rate_period;
    612     rx <= '0'; --check sum bit 4
    613     wait for baud_rate_period;
    614     rx <= '0'; --check sum bit 5
    615     wait for baud_rate_period;
    616     rx <= '0'; --check sum bit 6
    617     wait for baud_rate_period;
    618     rx <= '0'; --check sum bit 7
    619     wait for baud_rate_period;
    620     rx <= '1'; --stop bit
    621     wait for baud_rate_period;
    622     rx <= '1'; --stop bit
    623     wait for baud_rate_period;
     294    assign_rs485("00010000"); --data byte 01
     295    wait for 100ns;
     296    assign_rs485("00000000"); --data byte 02
     297    wait for 100ns;
     298    assign_rs485("10111100"); --data byte 03
     299    wait for 100ns;
     300    assign_rs485("00000001"); --data byte 04
     301    wait for 100ns;
     302    assign_rs485("00000000"); --data byte 05
     303    wait for 100ns;
     304    assign_rs485("00000000"); --data byte 06
     305    wait for 100ns;
     306    assign_rs485("00000000"); --data byte 07
     307    wait for 100ns;
     308    assign_rs485("00000000"); --data byte 08
     309    wait for 100ns;
     310    assign_rs485("00000000"); --data byte 09
     311    wait for 100ns;
     312    assign_rs485("00000000"); --data byte 10
     313    wait for 100ns;
     314    assign_rs485("00000000"); --data byte 11
     315    wait for 100ns;
     316    assign_rs485("00000000"); --check sum
     317    wait for 100ns;
     318    ---------------------------------------------------------------------------
     319    -- keep rx line high
    624320    ---------------------------------------------------------------------------
    625321    rx <= '1';
    626322    wait;
    627323   
    628   end process stim_proc;
     324  end process rs485_proc;
    629325
    630326end;
Note: See TracChangeset for help on using the changeset viewer.