Verilog_KapıSeviyesi
Transkript
Verilog_KapıSeviyesi
BİL 264L TOBB Ekonomi ve Teknoloji Üniversitesi Lab Öncesi Hazırlık Bilgisayar Mühendisliği Bölümü VERILOG HDL Kapı Seviyesinde Modelleme Verilog dili, günümüzde sayısal devre tasarımı için en çok kullanılan iki dilden bir tanesidir. Verilog bir HDL (Hardware Description Language) dilidir. Bil264L dersi boyunca şu ana kadar hep Xilinx ISE’nin schematic editörünü kullanarak yaptığımız tasarımları aslında Verilog diliyle çok daha kolay bir şekilde yapabiliriz. Aslında testbench için yazdığımız kodlar Verilog dilinde yazılmış test kodlarıydı. Bundan sonra deneylerimizde Verilog dilini kullanarak sayısal sistem tasarımı yapacağız. Verilog dilini öğrenmek zorundasınız, çünkü bu haftadan itibaren lablarda schematic editor yerine Verilog modülleri yazıp kullanacağız. Bu tutorialde Verilog dilini nasıl kullanacağınız hakkında genel bir bilgi verilecektir. Bu hafta sadece gate-level (kapı düzeyi) tasarımdan bahsedeceğiz. Verilog’da donanım birimleri “module” olarak ifade edilir. Aşağıda temel bir Verilog modül templete verilmiştir. X Y Z deneme Q R module <module_name> (); Yapacağımız tasarımın ismini “module” keyword’ünden sonra yazıyoruz. Module içerisine sistemin giriş ve çıkış sinyalleri örnekte verildiği gibi (input wire X, output wire R) yazılır. Daha sonra modulün body kısmında gate-level tasarım için gerekli kodları yazarız. Module sonuna da “endmodule” keyword’ünü koymak zorundayız. Şimdi basit bir devrenin Xilinx ISE’de Verilog modulü kullanarak nasıl yapıldığını göstereceğiz. X net2 Q Y Z net1 net3 R Sistemin giriş sinyalleri (X,Y ve Z), çıkış sinyalleri ise (Q ve R) dir. Verilog’da bütün kapıları teker teker ifade edeceğimiz için her bir kapının giriş ve çıkış tellerine (wire) isim vermeliyiz. Bazı kapılara dikkat edecek olursak direk herhangi bir giriş ya da çıkış teline doğrudan bağlı olmadığı gözükmektedir. Bu durumlar için Verilog’da “wire” keyword’u kullanılır. net1, net2 ve net3 telleri bu şekilde tanımlanmalıdır. Xilinx ISE’de New Project dedikten sonra karşımıza çıkan pencerede Top-level source type: kısmında daha önce schematic seçiyorken artık HDL seçmemiz gerekmektedir. Project Settings kısmını Xilinx Uygulama Tutorialindeki gibi ayarlıyoruz (zaten ayarlıysa değiştirmiyoruz). Sonra gelen pencerelere next deyip projemizi açıyoruz. Project New Source deyip, schematic yerine Verilog Module seçiyoruz. Sonra gelen iki pencerede bir şey değiştirmeden Next diyoruz. Karşımıza şöyle bir pencere gelmesi gerekiyor. Artık kodumuzu yazıp, tıpkı schematicte olduğu gibi diğer işlemleri (Synthesize, Implement Design ...) aynen yapıyoruz. Verilog’da gate-level tasarım yaparken aşağıdaki gibi bir yol izlenmelidir: and <gate_name> (<output>, <input1>, <input2>); // 2 girişli and (ve) kapısı nor <gate_name> (<output>, <input1>, <input2>, <input3>); // 3 girişli nor (veya değil) kapısı Bu mantıkla hareketle deneme modülünün Verilog kodu aşağıdaki gibi olmalıdır. Mantıksal kapılar paralel işlem yaptıkları için gate-level implementation yaparken kapıların sırasının bir önemi yoktur!