Warning: Illegal string offset 'name' in [path]/includes/functions.php on line 6439
RS422 -> HDB3
1 2

thread: RS422 -> HDB3

  1. #1
    Member
    Jun 2007
    Ogre
    64

    RS422 -> HDB3

    Ir vajadzība uztaisīt šādu konverteri uz MAX II EPM540T100C5... varbūt kāds var palīdzēt algoritma izstrādē un projektēšanā? Pats tikai mācos
    Kādam vienmēr ir taisnība...

  2. #2
    Moderator
    May 2007
    Rīga
    1,862

    Re: RS422 -> HDB3

    Nu pamatā doma varētu būt, ka jātaisa divi programmas bloki - RS422 uztvērējs un HDB3 raidītājs. Kad pa RS422 ir pienākuši dati, tas tiek paziņots HDB3 raidītājam un tas attiecīgi šos pašus datus pārraida.
    Ir 10 veidu cilvēki - tādi, kas saprot bināro kodu un tādi, kas nesaprot.

  3. #3
    Senior Member
    Sep 2006
    2,537

    Re: RS422 -> HDB3

    CIk ta liels datu pārraides ātrums tam RS422 būs ?
    ja ātrums nav liels (zem 1Mbita/s) un var būt neliela laika aizture (kāda 1 baita garumā ) ta nemaz CPLD nav vaidzīgs !, paņem kādu ātru MCU, kā Stm32 72Mhz un caur UART saņemtos datus dod uz IO kur ar C kodu maini IO pinu varības

    domā taisīt to logiku tā ka tiko caur UART ir saņemts valīds Bits tā viņu uzreiz dot ārā tajā HDB3 interfeisā ar minimālu Delay ? šādā gadijumā vaidzēs modificēt kādu esošo uart IP kodu, gatavie IP nederēs.
    gatavo IP risinājumi izskataš šādi:
    cpld UARTam var atrst Opencores.org vai paņemt kādu citu UART IP, kautvai no Alteras Quartus SOPC buildera komponentēm paņem uart uzmet uz SOPC loga un ta tev vaig uztaisīt to HDB3 sūtītāja IP ar avalon Slave buss interfeisu, un tākā UARTs SOPC builderī arī būs Slave devais ta vaidzēs kādu Master ierīci, moš SOPC bulderī ir kāds papild Master elements(izņemot proci), kas var savienot, pats šitā pataisno nēsu mēginājis neko slēgt, parasti MAster ir Procis (Nios II) ja kas tagat tā vis mazākā versija procim itkā ir pa velti (free), takā ja ir tajā cpld vieta procim + UART IP+HDB3 IP ta atliek uztaisīt tā HDB3 IP uzgenerēt sistēmu ar proci + uzrakstīt procim Asmā, vai C pāris koda rindas lai saņemtos Uart baitus sūta uz HDB3 Ip perifēriju sūtīšanai īstanībai tas ir līdzīgs variants pirmajam ar MCU tikai MCU jau nebūs tādas HDB3 perifērijas ! tur tā ar C jāsimulē.

  4. #4
    Moderator
    May 2007
    Rīga
    1,862

    Re: RS422 -> HDB3

    Epi, Tu atkal nenormāli sarežģī vienkāršas lietas. Nevajag ne Avalon busu, ne iekšējo CPU. Viss ir vienkārši - ir uztvērējs ar 8 bitu izeju un vienu signālu, kas ziņo, ka ir saņemti jauni dati. Un uztvērējs, kas saņemtos baitus nekavējoties pārraida pa HDB3. Protams, to visu vienkāršāk būtu izdarīt ar kādu MCU, bet ja cilvēks vēlas CPLD - kādēļ gan ne. Par baita aizturi - ja HDB3 ir ātrāks par RS422 konkrētajā gadijumā tad baita aizture sanāks tā vai tā, jo būs jāsagaida RS422 pārrraidāmais baits lai vispār varētu sākt sūtīt to pa HDB3, jo savādāk vēl nebūs pienācis RS422 otrais bits, bet pa HDB3 jau kaut kas būs jāsūta.
    Ir 10 veidu cilvēki - tādi, kas saprot bināro kodu un tādi, kas nesaprot.

  5. #5
    Member
    Jun 2007
    Ogre
    64

    Re: RS422 -> HDB3

    man ir tāds uzdevums uz CPLD šito realizēt, īsti nesaprotu ko un kā darīt... so, tāpēc vēršos pie speciem, kas varētu ne tikai ieteikt izlasīt kko vikipēdijā vai kkur citur gūglēt, bet gan reāli palīdzēt ar piemēriem...
    Kādam vienmēr ir taisnība...

  6. #6
    Senior Member
    Sep 2006
    2,537

    Re: RS422 -> HDB3

    nu ta saki ko tu nesaproti ?
    tas i: kurā punktā tālāk ar uzdevmu galā netiec ?

  7. #7
    Member
    Jun 2007
    Ogre
    64

    Re: RS422 -> HDB3

    jāsāk jau ar to, ka loģika klibo (nav man tās radošās loģikas sacerēšanas) zinu, kas kā strādā... abus signālus esmu izpētījis, zinu, ko vajag panākt, taču nesanāk... domāju, ka kko darbojoties ar palīgu padomiem es pats spētu saprast un turpmāk neprasīt šķietami elementāras lietas vajag startu - RS422 uztvērēju

    šo uzdevumu domāju realizēt QuartusII web edition 9.1, grafiskajā režīmā.
    Kādam vienmēr ir taisnība...

  8. #8
    Senior Member
    Sep 2006
    2,537

    Re: RS422 -> HDB3

    ar blokshēmām neko tālu netiksi, vaig kodēt.vismaz uzspiežot google tavu HDB3 + VHDL atradu lapu kur ir kods domāts priekš cpld un reku ir kods:
    NRZ to HDB3 encoder (nu Rs232 itkā vaidzētu būt NRZ kodējumam ta pieņeumu ka RS422 arī vaidzētu būt tādam pašam)
    tātad koa ienākošais signāls ir Non Return to Zero formātā un izejošais ir tas HDB3, paņem šito example kodu iemet Quartus VHDL projektā atver wawform simulātoru saliec tur tos PORTU signālus un uzstādi Input sigālus un ta uzsimulē un apsties vai ārā nāk tev vaidzīgie signālu, ja nāk ta pats zini tālāk kā ielādēt kodu iekš cpld
    :
    -- ############################################################################
    -- # Project    :    Leonardo CBT-Kernel                                      #
    -- #                                                                          #
    -- # Filename   :    special.vhd                                              #
    -- #                                                                          #
    -- # Component  :    nrz_hdb3 : NRZ to HDB3 encoder (NRZ : Non-Return to Zero,#
    -- #                            HDB3 : High Density Bipolar 3).               #
    -- #                                                                          #
    -- # Model      :    rtl                                                      #
    -- #                                                                          #
    -- # Designer   :    S. Theoharis,N. Zervas                                   #
    -- # Institute  :    VLSI Design Lab., University of Patras                   #
    -- # Date       :    01.05.1999                                               #
    -- ############################################################################
    
    library IEEE;
    use IEEE.std_logic_1164.all;
    use IEEE.std_logic_arith.all;
    
    -- nrz_hdb3 Entity Description
    entity nrz_hdb3 is
    	port(
    		RES, CLK, NRZ: in std_ulogic;
    		POS, NEG: out std_ulogic
    	);
    end nrz_hdb3;
    
    -- nrz_hdb3 Architecture Description
    architecture rtl of nrz_hdb3 is
    	signal q: unsigned(3 downto 0);	
    	signal zero, vl, ch, pos_neg, qzh: std_ulogic;
    	
    begin
    	ch<=vl xor pos_neg;
    	zero<=not(q(3) or q(2) or q(1) or q(0));
    	qzh<=q(3) or (zero and ch);
    	
    	POS<=CLK and pos_neg and qzh;
    	NEG<=CLK and not(pos_neg) and qzh;
    
    	NRZ_Process:process(CLK, RES)
    	begin
    		if (RES='0') then
    			q<=(OTHERS=>'0');
    		   vl<='0';
    			pos_neg<='1';
    		elsif (rising_edge(CLK)) then
    			q(0)<=NRZ;
    			q(1)<=(q(0) or zero);
    			q(3 downto 2)<=q(2 downto 1);
    			if (zero='1') then
    				vl<=not(vl);
    			end if;
    			if(((zero and (not(ch))) or q(3)) = '1') then
    				pos_neg<=not(pos_neg);
    			end if;
    		end if;
    	end process NRZ_Process;
    end rtl;

  9. #9
    Member
    Jun 2007
    Ogre
    64

    Re: RS422 -> HDB3

    Redz, lai uzrakstītu to kodu, būtu apmēram jāsaprot, kam tur jānotiek... tāpēc es dodu priekšroku grafiskajam režīmam, pēcāk varētu apgūt VHDL, jo tā jau sanāk tā pati loģikas salikšana. varētu sākt tā pakāpeniski, sākumā tikai ar RS422 uztvērēju... palīdzēsiet?
    Kādam vienmēr ir taisnība...

  10. #10
    Senior Member
    Sep 2006
    2,537

    Re: RS422 -> HDB3

    šito koda gabalu vari arī apskatītes grafiskā formā, caur RTL vieweri pec koda nosintezēšanas tur varēs redzēt visus grafiskos elementus, kas kā saslēgts, un ja gribi vari to grafisko shēmu atkārtot grafiskajā editorā (pats vēlreiz uzīmēt)
    ja nemāki palaist VHDL kodu ta izmanto Quartus TUTORialu, es pats tam pašā sākumā gāju cauri (pirms vairākiem gadiem) un nav nekas grūts.
    un pectam ka redzēsi grafiku gribēsi zināt kā tā visa shēma strādā ieliec VHDL kodā papild Output PORTU "Jaunais_PORTS" ->
    "entity nrz_hdb3 is
    port(
    RES, CLK, NRZ: in std_ulogic;
    POS, NEG: out std_ulogic;
    Jaunais_PORTS: out std_Logic
    );
    end nrz_hdb3;

    tālāk pieslēdzies kādam Arhitecture daļā definētajam Signālam pēc Begin: ->

    -- nrz_hdb3 Architecture Description
    architecture rtl of nrz_hdb3 is
    signal q: unsigned(3 downto 0);
    signal zero, vl, ch, pos_neg, qzh: std_ulogic;

    begin
    ch<=vl xor pos_neg;
    Jaunais_PORTS <= ch; // skatamies "ch" signālu

    tālāk wawform editorā pievieno Jaunais_PORTS signālu un laid simulātoru redzēsi kā mainās signāli, un šādi pēti visus intresējošos iekšējās logikas signālu vadus, un pēc RTL skaties.

    grafiski shēmas zīmējot paiet baigi daudz laika + ja kautkas jāmaina, jāmodificē ta arī laiks skrien, un vispār es shēmas grafiski veidot nemāku, es domāju kodu formātā.
    īstanībā ja nepatīk VHDL valoda vari mācītes verlog, tā itkā ir līdzīgāk C sintaksei tipa mazāk jāraksta kods, un ir brīvākas formās.