Bir omuz kazanın sırt çantası
Bu ne kadar zor?
Bir şans ver!
_
Uzun basın tanıma
[Konu]: LinCoding size GÇ bağlantı noktasının ne olduğunu söyler
[Yazar]: LinCoding
[Zaman]: 2016.11.8
Bir hafta oldu. Efsanevi SDRAM üzerinde çalışıyordum. Bu SDRAM ile ilgili değil. Ne kadar zor? Youjing'in SDRAM paket kitaplığından ilham aldım. SDRAM programının genel bir sürümünü yazmak istiyorum. SDRAM'ı değiştirdiğimde yalnızca dereceleri değiştirmem gerekiyor. Doğrudan kullanın. Geçen Pazar gününden beri Youjing'in SDRAM kitaplığını bir hafta okumama rağmen, onu anladım ve tüm yorumları kendim yazdım, ancak siyah altın tahtama aktardığımda başarılı olamadım. Gerçekten bulamıyorum. Bu yüzden, geçen haftadan itibaren SDRAM için kendim bir sürücü yazmayı planlıyorum. 10 gündür SDRAM izliyorum. Gerçekten uykulu ve uykulu hissetmeme neden oldu. Buna eşlik edemem ama geçtiğimiz 10 gün içinde internette SDRAM hakkında pek çok bilgi okudum. SDRAM'i neredeyse tamamen anladım. Şimdi tek baytlık bir okuma ve yazma programı yazdım ve iki farklı yonga ve farklı SDRAM FPGA'lar üzerinde. Denedim.Kolayca ekilebilir.Ben yazmayı bitirdikten sonra bloguma ücretsiz yüklenecek ve ihtiyacı olan arkadaşlar ücretsiz olarak indirebilecek.
Tamam, saçmalık büyük bir itici güçtür. SDRAM'i simüle ederken, SDRAM'ın veri portu giriş tipi olduğundan, simülasyon sırasında ne yapmalıyım? Birisi web sitesini özetlemiş olabilir, ancak bunu bir yere yazıp bu arada konuşmama izin verin IO bağlantı noktası anlayışım.
1. GÇ bağlantı noktası nedir
Aynı zamanda giriş ve çıkış olarak kullanılabileceği anlamına gelir.Giriş Çıkışı'nın kısaltması
2. Çift yönlü GÇ bağlantı noktası nedir ve yarı çift yönlü GÇ bağlantı noktası nedir
Hissediyor mu? . . Zaten buna hemen cevap veremem, yazar eskiden böyleydi ama büyük tanrılar böyle cevap vermiş olmalı.
Standart 51 tek çipli mikro bilgisayarı öğrenirken, herkes bunu bilebilir veya duymuş olabilir veya 51 tek çipli mikro bilgisayarın IO bağlantı noktalarının iki yönlü ve yarı çift yönlü olarak bölündüğünü fark etmemiş olabilir.Özel olarak, 80C51'in P1, P2 ve P3'ü yarı çift yönlü GÇ bağlantı noktalarıdır. P0, iki yönlü bir IO bağlantı noktasıdır. STM32'yi öğrenirken daha da korkutucudur, itme-çekme, yukarı çekme ve aşağı çekmedir. . . Yeni öğrenmeye başlayan yazar şaşkına döndü. . . , Ama gerçek aynı. Öyleyse soru, neredeyse iki yönlü nedir? İki yönlü nedir?
"Okurken, 1. çıktıyı okumadan önce ilk önce, bu yarı-çift yönlüdür" diyor ders kitabı, ancak P0'ın okurken 1 çıktı almasına gerek yok gibi görünüyor, aslında bu o kadar basit değil.
Yazarın kişisel anlayışı şudur: Bir hata varsa yazar sorumsuzdur, haha, ancak birbirleriyle iletişim kurabilir.
51 tek çipli mikrobilgisayar IO'nun yapısına bir göz atalım:
Yukarıdaki 4 resimden alıntı yapılmıştır: "SCM Teknolojisini Sıfırdan Öğrenme" -Liu Jianqing
Bu kitap 51 IO yapısından bahsederken oldukça açık, açıklığa kavuşturmak isteyen okuyuculara okumanızı öneririm. Yazar, tek vuruşta aldığım bazı kitapları okudu ve bazıları açıkça söylemedi.
Yazar şu şekilde anlar:
Bağlantı noktası P0, çift yönlü IO bağlantı noktası olarak adlandırılır çünkü bir adres / veri işlevi olarak kullanıldığında, yüksek ve düşük seviyelerde çıktı verebilen bir itme-çekme yapısı oluşturur ve üst ve alt MOS transistörlerinin her ikisi de kesildiğinde, yüksek empedans durumu sunar. , Dahili ve harici verilerin izolasyonunu gerçekleştirebilir.PO portu sıradan bir IO portu olarak kullanıldığında bir OC / OD kapısı oluşturur, yani açık kollektör / drenaj çıkışı, normal olarak düşük seviye çıkış yapılabilir, ancak yüksek seviye çıkış yapmak istiyorsanız, Bir kaldırma direnci ekleyin. Girdi olarak, Önce 1 çıktı almalı Yani, aşağı açılır MOS tüpünün bağlantısını kesmek için dahili mandala 1 yazın Bu anda pim yüzer durumdadır ve ardından okuma pini yüksek ve düşük seviyeleri okuyabilir.
P1, P2 ve P3, dahili kaldırma dirençleri nedeniyle yarı çift yönlü IO portları olarak adlandırılır, bu nedenle herhangi bir zamanda yüksek empedans durumu olmayacak, yalnızca yüksek ve düşük seviyeler olacaktır. Çıkış olarak kullanıldığında yüksek ve düşük seviyelerde çıkış yapabilir.Giriş olarak kullanıldığında, Önce 1 çıktı almalı Yani, aşağı açılır MOS tüpünün bağlantısını kesmek için dahili mandala 1 yazın ve ardından yüksek ve düşük seviyeleri okumak için pimi okuyun.
Yarı çift yönlü IO portu düşük seviyede çıktı verdiğinde, batma akımı 20mA'ya ulaşabilir.Çıkış yüksek seviyedeyken çıkış kapasitesi zayıftır, 1mA'dan azdır.Diğer cihazlara yüksek seviye çıkış verirse, diğer cihazlar giriş sırasında yüksek empedans durumunda olduğundan, Normalde yüksek ve düşük seviyelerde çıktı verebilir, ancak çevre birimleri (LED gibi) sürmek istiyorsanız, en iyisi transistörü kontrol ederek çevre birimlerini kontrol etmektir.
Bunu söyledikten sonra başım dönüyor. . . . Basit tutalım:
Çıkış durumunda yüksek ve düşük seviyelerde çıkış yapabilen ve giriş durumunda yüzen (yüksek empedans) herhangi bir geçit, üç durumlu bir kapıdır ve oluşturduğu IO portu çift yönlü bir IO olur.Diğer IO'lara ek olarak Her ikisi de yarı çift yönlü IO'dur. Bu nedenle, üç durum görünebildiği sürece, bağlantı noktaları iki yönlü bağlantı noktalarıdır ve yalnızca iki duruma yarı iki yönlü bağlantı noktaları denir.
Yazarın sonucunun doğru olup olmadığını bilmeme rağmen, SDRAM veri portu simülasyonu yaparken mevcut verilerle herhangi bir çakışma yok.
3. IO portlu bir modül nasıl sürülür veya simüle edilir
1. GÇ bağlantı noktası sürücüsü (yalnızca en önemlilerini yakalar)
inoutIO;
inputWR_data;
outputregRD_data;
reg isOut;
always @ (CLK veya negedge RSTn)
başla
eğer (! RSTn)
dışarı < = 1'b0;
Başka
durum (durum)
0: // IO'dan veri oku
başla
dışarı < = 1'b0;
RD_data < = IO;
durum < = durum + 1'b1;
son
1: // IO'ya veri yaz
başla
dışarı < = 1'b1;
son kasa
son
atama IO = isOut? WR_data: 16'dz;
2. GÇ bağlantı noktası simülasyonu (yalnızca en önemlilerini durdurun)
regtreg_IO; // GÇ'yi oku
wire IO; // IO yaz
assignIO = treg_IO;
regRD_data;
regWR_data;
rData < = 0;
RD_data < = IO;
durum < = durum + 1'b1;
son
1: // IO'ya veri yaz
başla
treg_IO < = WR_data;