Sayısal Filtreler ve Sistemler Dersi 1. Ödev İçin Yardımcı

advertisement
Sayısal Filtreler ve Sistemler Dersi
1. Ödev İçin Yardımcı Bilgiler
Emrah Abtioğlu
eabtioglu@itu.edu.tr
İTÜ Gömülü Sistem Tasarımı Laboratuvarı, 26/03/2013.
UART (Universal Asynchronous Receiver / Transmitter)
Evrensel asenkron alıcı/göndericiler, veriyi paralel formdan seri forma ya da
seri formdan paralel forma çeviren donanımlardır. RS-232, RS-422 ve RS-485 gibi
haberleşme standartlarının gerçeklemesinde bu donanımdan yararlanılır. FPGA ve
bilgisayar arasındaki haberleşmeyi sağlamak için çalışma yapısı aşağıda
açıklanan 115200bps ile çalışan 1-Startbit, 8-bit veri, 1-stopbit ve no parity
özelliklerine sahip UART kullanılacaktır.
Baudrate bir saniyede gönderilen toplam bit sayısı(bits per second, bps)
olarak tanımlanmıştır. Bir örnekle açıklarsak, 8-bit uzunluğundaki bir veriyi
göndermek için, bu verinin başına 1-startbit ve sonuna 1-stopbit eklenir ve
toplamda 10-bitlik bir veri gönderilir. 115200bps ile 1 saniyede maksimum
115200/10 = 11520 bayt gönderilebilir.
Şekil 1
Şekil 1 UART'ın iletim hattında haberleşme sırasındaki değişimleri
göstermektedir. Veri gönderilmediği zaman iletim hattı lojik 1 seviyesinde tutulur.
Gönderici veri iletimine başlayacağını bildirmek için iletim hattına lojik 0 (Startbit)
gönderir. Daha sonra 8-bitlik veri Bit 0'dan (LSB) başlayarak (Little Endian
gönderim) sırayla iletim hattından gönderilir. Bit 7 (MSB) gönderildikten sonra veri
iletiminin sona erdiğini bildirmek için iletim hattına lojik 1 (Stopbit) gönderilir. Bir
sonraki veri iletimine kadar iletim hattı lojik 1 seviyesinde tutulur.
Filtre tasarımınızda FPGA ile bilgisayar arasındaki iletişimi sağlamak için
kullanılacak olan, seri porttan aldığı veriyi yankı yaparak tekrar seri porta basan,
ECHOv1.v modülüdür.
Şekil 2
ECHOv1 modülünün giriş ve çıkışları Şekil 2 de gösterilmiştir. RxD pini
bilgisayardan seri alıcıya veri aktarırken, TxD pini de seri alıcı ile alınmış 8-bitlik
veriyi bilgisayara aktarır. Veri iletişiminde bir hata algılandığında, hata çıkışı
modül reset yapılana kadar aktif olur. Modülün iç yapısını ECHOv1.v dosyasındaki
açıklamaları okuyarak daha iyi anlayabilirsiniz. ECHOv1 modülünün alt modülü
UARTv1.v modülüdür.
Şekil 3
Şekil 3 te UARTv1.v modülünün giriş ve çıkışları gösterilmiştir. Giriş
kısmında göndericinin 8-bitlik veri girişi (Tx_Data_In), reset, alıcının veri aldığı pin
(RxD), göndericiye veri iletimine başlamasını bildiren pin (Tx_Start) ve son olarak
üst modülden (ECHOv1.v) veri iletişiminin doğru bir şekilde gerçekleştiğini
bildiren pin (Ust_Modul_Bayt_Alindi) yer almaktadır. Çıkış kısmında ise, alıcının
8-bitlik veri çıkışı(Rx_Data_Out), veri iletişiminde hata olduğunu kullanıcıya
bildiren çıkış (hata), verinin doğru alındığını üst modüle bildiren çıkış
(Rx_Bayt_Geldi), hatalı veri alındığını bildiren çıkış (Rx_Hatali_Geldi), göndericinin
veri gönderdiği çıkış (TxD), ve son olarak göndericinin veri gönderdiğini üst
modüle bildiren çıkış (Tx_Gonderiyor_Out) yer almaktadır.
ECHOv1.v modülünde yankı işlemini gerçeklemek için UARTv1.v
modülünün
Rx_Data_Out
çıkışı,
Tx_Data_In
girişine
bağlanmıştır.
Tasarlayacağınız filtrenin veri girişine Rx_Data_Out çıkışını, filtrenin
çıkışını da Tx_Data_In girişine bağlamanız gerekmektedir. Rx_Data_Out
çıkışındaki veriyi ne zaman alacağınızı ya da Tx_Data_In girişine veri
yazıp gönderme işlemini ne zaman yapacağınızı ECHOv1.v modülündeki
açıklamaları
okuyup,
benzer
bir
kontrol
yapısı
gerçekleyerek
belirleyebilirsiniz.
UARTv1.v modülünün alt modülleri, UARv13.v (alıcı modülü) ve UATv12.v
(gönderici modül) modülleridir. Bu modüllerin açıklamalarını dikkatlice
okuyup özellikle davranışsal bloklarının yapısını anlamanız, seri
iletişimdeki hataları algılamanızda ve kontrolcü tasarımında büyük önem
arz etmektedir.
MATLAB ile Seri Haberleşme Portunun Kullanılması:
MATLAB ile seri porta veri göndermek yada veri almak için “serial”
fonksiyonu ile seri port nesnesi oluşturulmalıdır. Fonksiyonun kullanımı aşağıdaki
gibidir.
S1= serial(‘COMX’, ‘P1’,’V1’,’P2’,’V2’,’P3’,’V3’…..);
•
•
•
S1, belirtilen özelliklerde oluşturulan seri port nesnesinin adıdır.
COMX, kısmına COM1, COM2 gibi değerler girilerek oluşturulan seri port
nesnesinin hangi porta bağlanacağı belirlenir. Hangi portun kullanılması
gerektiğini anlamak için aygıt yöneticisine başvurulur.
P’ler seri portun özelliklerine, V’ler de bu özelliklerin alacağı değerlere
karşılık gelmektedir.
Örnek:
s1 = serial ('COM4', 'BaudRate', 115200,
'OutputBufferSize', 700000, 'Timeout', 10);
'InputBufferSize',
700000,
s1 adıyla oluşturulan seri port nesnesinin, veri aktarım hızı 115200bps, gelen
verileri depoladığı tamponun ve gönderdiği verileri sırada beklettiği tamponun
boyutu 700000 byte, seri porttan okuma yapmaya çalıştığında tepki alamazsa,
okuma işlemini sonlandırmak için beklemesi gereken süre 10 saniye olarak
belirlenmiştir.
Serial fonksiyonu ile ilgili daha fazla bilgiye MATLAB komut satırına 'help
serial' yazarak veya http://www.mathworks.com/help/matlab/ref/serial.html
linkine tıklayarak ulaşabilirsiniz.
Oluşturulan seri port nesnelerinin seri port ile bağlantılarını açmak için
fopen(), bağlantılarını kesmek için fclose(), seri port nesnesini silmek için delete()
fonksiyonları kullanılır. Örnek kullanımlar aşağıdaki gibidir.
• fopen(s1)
• flcose(s1)
• delete(s1)
Oluşturulan seri port nesnesi fopen() fonksiyonu ile bağlantıya hazır hale
getirildiğinde, seri porta veri göndermek için fwrite(), seri porttan veri okumak
için fread() fonksiyonları kullanılabilir. Örnek kullanımlar aşağıdaki gibidir.
•
•
•
•
fwrite(s1,6,'uint8');
fwrite(s1,H((1:10)),'int8');
fread(s1,1,'uint8');
fread(s1,20,'int8');
İlk örnek s1 nesnesinin bağlı olduğu seri porta, 6’nın karşılığı olan 8-bitlik
0x06 değerini gönderir. İkinci örnekte H matrisindeki ilk 10 eleman arka arkaya
gönderilir. Üçüncü örnekte ise seri porttan uint8 türünde 8-bitlik veri okunur.
4.örnekte ise seri porttan arka arkaya 20 tane int8 türünde veri okunur.
Bu fonksiyonları
inceleyebilirsiniz.
daha
iyi
anlamak
Seri_Sin.m
dosyasını
okuyup
Download