"Blog orijinal" "parametreli" kodlayıcı

Bu konuyu gördüğünüzde belki de çok basit olduğunu düşünüyorsunuz. Doğru tahmin ettin. Bununla birlikte, bu konuyu size tasarımı gerçekleştirebilecek yöntemleri ve birkaç nadir veya alışılmadık bilgi noktasını tanıtmak için kullanmak istiyorum.

Öncelikle tasarımımıza başlamadan önce tasarımda kullanılacak iki bilgi noktasını tanıtın.

< 1 > Tasarım parametreleştirilebilir olduğundan, "parametreleştirme" denen şey, giriş verilerinin bit genişliğini ayarlayarak karşılık gelen veri bit genişliğini gerçekleştirebilen bir kodlayıcıdır. Kodlayıcının giriş verisi bit genişliğinin A ve çıktı verisi bit genişliğinin B olduğunu varsayalım. Dijital elektronik bilgimize göre, ilişki B = log2 (A), burada log2 (x), 2 tabanının logaritmasıdır. işlevi. Verilog HDL'de buna karşılık gelen bir sistem işlevi vardır: $ clog2 (x). Parametre tanımında bunun bir örneği aşağıda gösterilmiştir:

parametre C_DIN_WIDTH = 8; parametre C_DOUT_WIDTH = $ clog2 (C_DIN_WIDTH);

< 2 > Burada tanıtmak istediğim şey wor anahtar kelimesi, herkesin onu nadiren kullandığına inanıyorum. Birincisi, sentezlenebilir; ikincisi, line-veya fonksiyonuna sahiptir; son olarak, atama ile atanır. Örneğin, bir OR geçidinin işlevsel modülü aşağıdaki gibidir:

/ ***************************** Telif Hakkı Beyanı ***************** **************** ** Elektronik teknoloji uygulama web sitesi, CrazyBird ** ** * *----------------------------Dosya bilgisi------------------- --------------- ** Dosya adı: or_gate.v ** Oluşturan: CrazyBird ** Oluşturma tarihi: 2016-1-24 ** Sürüm numarası: v1.0 ** İşlev Açıklama: OR kapı işlevi ** ******************************************* **************************** / // synopsys translate_off `zaman ölçeği 1 ns / 1 ps // synopsys translate_on module or_gate (dina, dinb , dout); // ******************************************** ********************** // Bağlantı noktası tanımı // ********************** ******************************************** girdi dina; girdi dinb; çıktı sözcükleri; // ******************************************** ********************** // Veya geçit uygulaması // ********************* ********************************************* atama dout = dina; atama dout = dinb; endmodule

Karşılık gelen kapsamlı sonuç Şekil 1'de gösterilmektedir.

Şekil 1 Kapsamlı sonuçlar

Daha sonra, kodlayıcıyı uygulama yöntemini tanıtacağım: İki yol düşünüyorum: birincisi, veri bitlerinin üzerinden geçerek; ikincisi, formülleri türeterek.

< 1 > Her ikisi de bir for döngüsü yardımıyla uygulanan iki veri biti geçişi yöntemi vardır. İlk yöntem, giriş verilerinin düşük bitinden yüksek bitine geçiş yapmak ve çaprazlanan veri bitinin 1 olup olmadığını belirlemektir, eğer 1 ise karşılık gelen ikili kod, kodlayıcının çıkışıdır. İlgili Verilog HDL uygulaması aşağıdaki gibidir (aşağıdaki tüm tasarımlar doğrulanmıştır ve simülasyon sonuçları bu blog gönderisinde verilmemiştir):

/ ***************************** Telif Hakkı Beyanı ***************** **************** ** Elektronik teknoloji uygulama web sitesi, CrazyBird ** ** * *----------------------------Dosya bilgisi------------------- --------------- ** Dosya adı: öncelik_encode.v ** Oluşturan: CrazyBird ** Oluşturma tarihi: 2016-1-24 ** Sürüm numarası: v1.0 ** İşlev Açıklama: Geçiş yöntemine dayalı parametrik kodlayıcı ** ************************************** ********************************* / // synopsys translate_off `zaman ölçeği 1 ns / 1 ps // synopsys translate_on modülü öncelik kodu (din, dout); // ***************************************** ************************* // Parametre tanımı // ******************* *********************************************** C_DIN_WIDTH parametresi = 8; parametre C_DOUT_WIDTH = $ clog2 (C_DIN_WIDTH); // ************************************* ***************************** // Bağlantı noktası tanımı // *************** ************************************************** * giriş din; çıktı kaydı; // **************************************** ************************** // Dahili değişken tanımı // ****** ************************************************** ********** reg bit_cnt; reg dout_r; // ******************************** ********************************** // Kodlayıcı uygulaması // ********* ************************************************** ******* her zaman @ (*) begin dout_r = {(C_DOUT_WIDTH) {1'b0}}; for (bit_cnt = 0; bit_cnt < C_DIN_WIDTH; bit_cnt = bit_cnt + 1) başlar if (din == 1'b1) dout_r = bit_cnt; end dout = dout_r; end endmodule

Diğer bir yöntem, giriş verilerinin yüksek bitinden düşük bitine geçiş yapmak ve çaprazlanan veri bitinin 1 olup olmadığına karar vermektir, eğer 1 ise karşılık gelen ikili kod, kodlayıcının çıktısıdır.

< 2 > Formüller türeterek. Aşağıdakiler, 8-3 kodlayıcının giriş ve çıkış uygunluğudur:

din dout 0000_00000000000_00010000000_00100010000_01000100000_10000110001_00001000010_00001010100_00001101000_0000111

Yukarıdaki ilişkiye dayanarak, aşağıdaki formül türetilebilir:

dout = din ^ din ^ din ^ din; dout = din ^ din ^ din ^ din; dout = din ^ din ^ din ^ din;

Yukarıdaki formülü tekrar özetlemek gerekirse, enkoder çıktısının belirli bir biti, kodlayıcı girişinde ikili indeks numarası 0 olan tüm bitlerin OR işlemi gibi, bitin 1 olmasına neden olabilecek giriş bitinin OR işleminin sonucu ile belirlenebilir. , Enkoder çıktısının 0. bit dout'unu alın; enkoder giriş din'de ikili indeks numarası 1 olan tüm bitlerde OR işlemini gerçekleştirin, enkoder çıktısının 1. bit dout'unu alın ve bu şekilde devam edin.

Tasarımda, iki for döngüsü kullanılır, biri kodlayıcı tarafından girilen indeks numarasını saymak için kullanılır, diğeri ise kodlayıcı tarafından çıktı indeks numarasını saymak için kullanılır. Aynı zamanda, karşılık gelen OR işlemi için giriş ikili indeks numarasının karşılık gelen bitini belirlemek gerekir. Formüle dayalı parametreli kodlayıcının Verilog HDL uygulaması aşağıdaki gibidir:

/ ***************************** Telif Hakkı Beyanı ***************** **************** ** Elektronik teknoloji uygulama web sitesi, CrazyBird ** ** * *----------------------------Dosya bilgisi------------------- --------------- ** Dosya adı: öncelik_encode.v ** Oluşturan: CrazyBird ** Oluşturma tarihi: 2016-1-24 ** Sürüm numarası: v1.0 ** İşlev Açıklama: Formül yöntemine dayalı parametrik kodlayıcı ** ************************************** ********************************* / // synopsys translate_off `zaman ölçeği 1 ns / 1 ps // synopsys translate_on modülü öncelik kodu (din, dout); // ***************************************** ************************* // Parametre tanımı // ******************* *********************************************** C_DIN_WIDTH parametresi = 8; parametre C_DOUT_WIDTH = $ clog2 (C_DIN_WIDTH); // ************************************* ***************************** // Bağlantı noktası tanımı // *************** ************************************************** * input din; output wor dout; // **************************************** ************************** // Dahili değişken tanımı // ************ ************************************************** **** genvar i; genvar j; // ************************************** **************************** // Kodlayıcı uygulaması // *************** ************************************************** * için oluştur (i = 0; i < C_DIN_WIDTH; i = i + 1) begin: din_traversal için (j = 0; j < C_DOUT_WIDTH; j = j + 1) begin: dout_traversal eğer (i == 1'b1) atama dout = din ; end end endgenerate endmodule

İş teklifleri

Bir medya editörünün sesi: OPPO K1 en uygun maliyetli cep telefonu
önceki
"Demon Ling Ling" transfer afişini açığa çıkardı, Wu Junru Chen Kexin Wuhan'da "hayalet" i yakaladı
Sonraki
Araba kazası bir kaplan kadar şiddetli! Aracın aktif güvenliğini ve pasif güvenliğini biliyor musunuz?
Kalman Filtresinin "Seçilmiş Makaleler" Uygulaması - "Elektronik Teknolojinin Uygulanmasında" Mükemmel Makaleler Koleksiyonu
"Tomb Raider: Shadow" yeni demo duyuruldu, Lara orman düşmanlarını süpürüyor
2018 Çin'in BT etkisi listesi: IAM KJ780F hava temizleyici yıllık inovasyon ödülünü kazandı
Kylin İşletim Sistemi Platformunun Soft-Time Senkronizasyon Yöntemi Üzerine "Akademik Rapor" Araştırması
Belki de beklediğiniz "crock wagon" hayatından sadece bir C-TREK
Hangi filmler izlenmeli | Oyunculuk okulu çıldırıyor, yüz felcinden daha kötü! Zhang Yishan kalbimi karşılaştırıyor, onu yerinde patlattım
OPPO R17 Yılbaşı modeliyle harika buluşma: özel size özel aşk
"Endüstri Sıcak Noktaları" Üçüncü Nesil Yarı İletken Malzemelerin Gelişim İlerlemesinin Kısa Bir Analizi
Capcom, JD.com'da bir mağaza açtı! Satın almak istediğin bir şey var mı?
ARM, araç içi sistem pazarının egemenliğini yeniden ilan ederek otonom sürüş çipi mimarisini yayınladı
Orta sınıf model Samsung A6S, neden illüstratör olmak güzel?
To Top