"Butik blog" LinCoding size IO bağlantı noktasının ne olduğunu söyler

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;

Tao Piao Piao Röportajı Xu Lu: Pişmanlık duymayan gençlik kendin olmaktır
önceki
Yaklaşan bu sert bilim kurgu filmi bir canlanmanın habercisi oldu
Sonraki
Denetimli öğrenme için en yaygın beş algoritma, kaç tanesini biliyorsunuz?
Yılın En İyi On Model Çalışanı Geçen yılki çekimler dışında, gerçekten hiçbir şey yapmadılar
Orta yaşlı ve yaşlı insanların uyanışı: dede ve teyzenin Alipay kırmızı zarflarını sırf lahana için sıraya koyması
TensorFlow'da sıfırdan RNN (tam kod) oluşturmayı öğretin!
"The Crew 2" çıkış tarihi onaylandı, her versiyonun ayrıntıları açıklandı
Kötü haber! Linkin Park'ın baş şarkıcısı Chester Bennington 41 yaşında intihar etti
"Super Bomberman R" Haziran ayında PS4 / Xbox One / PC'ye çıkacak
Na Ying, "Three Lives Three Worlds Ten Miles of Peach Blossom" filminin aynı isimli tema şarkısını söyledi.
Camera 360 selfie küçük sınıf: Bunun erkeklerin en çok ilgisini çeken selfie pozu olduğu söyleniyor
FC tabanlı video aktarım gösteri modülünün tasarımı ve uygulaması
Yeni telefon resmi olarak ön satışa açıldı.OPPO K1, 1599 yuan'dan itibaren her şeye sahip!
Sobel Algoritmasına Dayalı Görüntü Kenarı Algılamanın FPGA Uygulaması
To Top