slideshow 1 slideshow 2 slideshow 3 slideshow 4

Połączenie Mikrokontroler - USB

   W zaprojektowanym układzie mikrokontroler może komunikować się z układem odpowiedzialnym za wymianę danych pomiędzy urządzeniem pomiarowym a komputerem PC. W układzie użyto układu FT245BM firmy FTDI o asynchronicznym interfejsie wymiany danych. Znaczenie sygnałów modułu USB jest następujące:

  • usb_rxf. Sygnał informujący o danych w module USB, które są do odebrania przez mikrokontroler
  • usb_txe. Sygnał informujący o możliwości przyjęcia przez moduł USB kolejnych danych do wysłania do komputera PC
  • usb_wr. Sygnał żądania zapisu danych do modułu USB
  • usb_rd. Sygnał żądania odczytu z modułu USB
  • data. Magistrala danych

   Na rysunku 4 przedstawiono przebieg sygnałów przy zapisie i odczycie danych do i z układu USB FT245BM przez mikrokontroler:

image004_s480.png
Rys 4. Wykresy czasowe operacji odczytu i zapisu dla modułu USB

Zależności czasowe przedstawionych przebiegów dostępne są w dokumentacji układu FT245BM [3].

   Fragment kodu źródłowego umożliwiającego komunikację mikrokontrolera
z rejestrami modelu urządzenia pomiarowego przedstawiono na listingu 1:

always@(posedge uc_clk)
begin
   if (sys_rst == 1'b1)
      begin
         //resetowanie_sygnalow_wewnetrznych
      end
   else
   case (uc_adr)
      Adres_A:
         begin
           dane_dla_uc <= rejestr_wewnetrzny_X;
         end
      Adres_B:
         begin
            dane_dla_uc <= rejestr_wewnetrzny_Y;
            if (uc_wr_n == 1'b0)
            begin
               rejestr_wewnetrzny_Z <= dane_z_uc;
            end
         end
   endcase
end
List.1. Przykładowy interfejs wymiany danych pomiędzy modelem a mikrokontrolerem

   Poza znanymi już konstrukcjami języka Verilog komentarza wymagają konstrukcje ściśle powiązane z przykładowym interfejsem przedstawionym na listingu 1.
Zasadę zaprezentowanego modułu można opisać w następujący sposób:

  • sys_rst == 1'b1. W przypadku aktywnego sygnału zerującego sys_rst wszystkie rejestry wewnętrzne ustawiane są do wartości początkowej. W przeciwnym przypadku układ pracuje wg ustalonego algorytmu
  • Adres_A, Adres_B. W zależności od pojawienia się któregoś z tych adresów na magistrali adresowej modułu, wykonywany zostaje kod zawarty pomiędzy słowami kluczowymi begin/end
  • dane_dla_uc <= rejestr_wewnetrzny_Y. Dane z rejestru wewnętrznego przepisywane są do rejestru wyjściowego modułu. W tym przypadku nie jest konieczne badanie stanu sygnału uc_rd, ponieważ na wyjściu układu znajduje się zespół 8 bramek trójstanowych, które wystawiają zawartość rejestru dane_dla_uc tylko w przypadku gdy sygnał uc_rd jest aktywny
  • rejestr_wewnetrzny_Z. Rejestr modułu pomiarowego, który nadpisywany jest wartością rejestru dane_z_uc w przypadku, gdy adres uc_adr i sygnał zapisu uc_wr mają odpowiednie wartości [4].

Fijak Logic od 2009r