03.03.2014 VERILOG. Modüller



Benzer belgeler
Verilog HDL e Giriş Bilg. Yük. Müh. Selçuk BAŞAK

Programlanabilir Devreler

Chapter1: Introduction. Ders 1: Giriş. Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-1

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

VHDL. Ece Olcay Güneş & S. Berna Örs

NECMETTİN ERBAKAN ÜNİVERSİTESİ MÜHENDİSLİK MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ SAYISAL DEVRE TASARIMI LABORATUVARI DENEY FÖYÜ

PASCAL PROGRAMLAMA DİLİ YAPISI

Digital Design HDL. Dr. Cahit Karakuş, February-2018

5. LOJİK KAPILAR (LOGIC GATES)

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

SAYI SİSTEMLERİ ve BOOLE CEBİRİ 1+1=1 ÖĞR.GÖR. GÜNAY TEMÜR - TEKNOLOJİ F. / BİLGİSAYAR MÜH.

FPGA İLE UYGULAMA ÖRNEKLERİ

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

HDL Dilleri VHDL. Son olarak, spesifik ASIC teknolojisi için devrenin yerleşimi netlist tanımlamalarından gelen diğer araçlarla oluşturulmuş olunur.

Yazılan programın simülasyonu için; (A<B), (A>B) ve (A=B) durumunu sağlayacak 2 şer tane değeri girerek modelsimde oluşan sonuçları çiziniz.

«BM364» Veritabanı Uygulamaları

SELÇUK ÜNĠVERSĠTESĠ MÜHENDĠSLĠK-MĠMARLIK FAKÜLTESĠ ELEKTRĠK-ELEKTRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ LOJĠK DEVRE TASARIM DERS NOTLARI

BİL-142 Bilgisayar Programlama II

HSancak Nesne Tabanlı Programlama I Ders Notları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Bu deney çalışmasında kombinasyonel lojik devrelerden decoder incelenecektir.

YZM 2105 Nesneye Yönelik Programlama

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

SAYISAL VLSI SİSTEM TASARIM AKIŞI

Programlama Dilleri 3

Veri Yapıları ve Algoritmalar

FPGA İLE UYGULAMA ÖRNEKLERİ

DOĞRULUK TABLOLARI (TRUTH TABLE)

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

18. FLİP FLOP LAR (FLIP FLOPS)

Güz Y.Y. Lojik Devre Laboratuvarı Laboratuvar Çalışma Düzeni

FPGA ile 2x16 LCD Uygulaması

FPGA İLE UYGULAMA ÖRNEKLERİ FPGA ile Seri Haberleşme (RS232) Uygulaması

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1

(Random-Access Memory)

/*int sayi1, sayi2,toplam=0;

FPGA ile Gömülü Sistem Tasarımına Giriş

T.C. İstanbul Medeniyet Üniversitesi Mühendislik ve Doğa Bilimleri Fakültesi Elektrik-Elektronik Mühendisliği Bölümü

Bölüm 8. İfade Seviyesindeki Kontrol Yapıları ISBN

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

Onluk duzende toplama. Lecture 4. Addition and Subtraction. Onluk tabanda toplama

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

SAYISAL ELEKTRONİK. Ege Üniversitesi Ege MYO Mekatronik Programı

8086 Mikroişlemcisi Komut Seti

Degişken Tanımlama Ve Operatörler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

Veritabanı. SQL (Structured Query Language)

BLM 221 MANTIK DEVRELERİ

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Bilgisayar Programlama

1. Temel lojik kapıların sembollerini ve karakteristiklerini anlamak. 2. Temel lojik kapıların karakteristiklerini ölçmek.

SAYISAL ELEKTRONİK. Ege Üniversitesi Ege MYO Mekatronik Programı

İnternet Programcılığı Dersi 2.Dönem Ders Notu

BM-311 Bilgisayar Mimarisi

Bölüm 4 C de Program Kontrolü

Nesne Yönelimli Programlama

Java da Program Denetimi ve Operatörler

Operatörler. 6.1 Operatör Nedir?

1 ELEKTRONİK KAVRAMLAR

Bölüm 7. İfadeler ve atamalar ISBN

Algoritma ve Programlamaya Giriş

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

Bölüm 7. Deyimler ve Atama ifadeleri ISBN

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

Algoritma ve Akış Diyagramları

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Fen ve Mühendislik Uygulamaları ile MATLAB

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Makine Mühendisliği İçin Elektrik-Elektronik Bilgisi. Sayısal Elektronik

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n

BİLGİSAYAR PROGRAMLAMA DERSİ

DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM223 SAYISAL MANTIK TASARIMI : QUARTUS II TASARIM ORTAMI: TEMEL VHDL KULLANIMI

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

6. Fiziksel gerçeklemede elde edilen sonuç fonksiyonlara ilişkin lojik devre şeması çizilir.

BM-311 Bilgisayar Mimarisi

Proje #2 - Lojik Devre Benzetimi

Java da İşleçler, Ders #3 (4 Kasım 2009)

BÖLÜM 2 SAYI SİSTEMLERİ

Yrd. Doç. Dr. Caner ÖZCAN

PostgreSQL ve PL/pgSQL

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

BİLGİSAYAR PROGRAMLAMA DERSİ

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

OPERATÖRLER Alıştırmalar

BM-311 Bilgisayar Mimarisi

Transkript:

VERILOG Modüller Devre bileşenleri module içinde tasarlanır. Modüller hem yapısal hem de davranışsal ifadeleri içerebilir. Yapısal ifadeler lojik kapılar, sayaçlar ve mikroişlemciler gibi devre bileşenlerini ifade eder. Davranışsal seviye ifadeleri ise döngüler, ifthen deyimleri gibi devre elemanlarına doğrudan haritalama yapmayan ifadelerdir. 1

Modüller-Örnek module Keyfi bir modül ismi Keyfi bir port listesi Assignment İfadeleri ile Yapısal Tasarım wire d; assign d = a b; //continuous assignment wire d = a b; //implicit continuous assignment 2

Initial ve Always Blokları ile Davranışsal Tasarım - Örnek Değişken İsimleri {[A-Z], [a-z], [0-9], _, $}, karakterlerini içerebilir, fakat.. $ veya [0-9] ile başlayamaz myidentifier doğru m_y_identifier doğru 3my_identifier yanlış $my_identifier yanlış _myidentifier$ doğru Büyük-küçük harf duyarlılığı myid Myid 6 3

Açıklamalar // Bu satır bir açıklamadır /* Çok satırlı açıklama */ /* İç içe/* açıklama */ tek açıklama gibi */ 7 Verilog Değer Seti 0 1 X düşük logic seviyesi veya false durumu yüksek logic seviyesi veya true durumu bilinmeyen logic seviyesi Z yüksek empedans logic seviyesi (çıkışta hiçbir şey okunamaz) 8 4

Verilog da Sayılar (i) <boyut> <kök> <değer> Bit sayısı Binary b or B Octal o or O Decimal d or D Hexadecimal h or H Ardışık karakterler 0-f, x, z 8 h ax = 1010xxxx 12 o 3zx7 = 011zzzxxx111 9 Verilog da Sayılar (ii) Okunabilir olması açısından _ kullanılabilir 12 b 000_111_010_100 12 b 000111010100 12 o 07_24 MS(most significant) bit = 0, x or z 4 b x1 = 4 b xx_x1 MS bit = 1 4 b 1x = 4 b 00_1x Aynı sayıyı gösterirler 10 5

Nets (i) kabloların(wires) logic ile sürüldüğü düşünülebilir Bağlanmazsa z ye eşittir Nets çeşitleri wire wand (wired-and) wor (wired-or) tri (tri-state, örn. mikroişlemcide ortak yol kullanmada faydalı) supply0 (ground) supply1 (vcc) 11 A B Y Nets (ii) wire Y; // tanımlama assign Y = A & B; A en Y tri Y; // tanımlama assign Y = (en)? A : z; (bufferlanmış çıkış) 12 6

Register lar Değerleri depolayan değişkenler Kartta donanımsal olarak register yoktur, ancak donanım gibi tanımlanabilir. reg reg A, C; // tanımlama A = 1; C = A; // C = 1 A = 0; // C halen 1 değerinde C = 0; // C artık 0 oldu 13 Vektörler Bus ları gösterirler wire [3:0] busa; reg [1:4] busb; reg [1:0] busc; Pay yönetimi busc = busa[2:1]; Vektör ataması (konuma göre) busb = busa; busc[1] = busa[2]; busc[0] = busa[1]; busb[1] = busa[3]; busb[2] = busa[2]; busb[3] = busa[1]; busb[4] = busa[0]; 14 7

Integer & Real Veri Tipleri Tanımlama integer i, k; real r; register lar gibi kullanılabilir i = 1; // atamalar prosedür içinde yapılır r = 2.9; k = r; // k integer olduğundan 3 e yuvarlanır Integer lara sistem tarafından ilk değer atanmaz Real lara sistem tarafından 0.0 ilk değeri atanır 15 Diziler(i) Sentaks integer count[1:5]; // 5 integer reg var[-15:16]; // 32-1 bit regs reg [7:0] mem[0:1023]; // 1024 8-bit regs Dizi elemanlarına erişim Bütün elemanlara: mem[10] = 8 b 10101010; Alt gruplara(geçici depolama alanı gerektirir): reg [7:0] temp;.. temp = mem[10]; var[6] = temp[2]; 16 8

Diziler(ii) Sınırlama: Dizinin alt grubuna veya tüm diziye bir kerede ulaşılamaz var[2:9] =???; // YANLIŞ!!,teker teker // yapılacak var =???; // YANLIŞ!! Çok boyutlu dizi yoktur reg var[1:10] [1:100]; // YANLIŞ!! Real veri tipi için dizi çalışmaz real r[1:10]; // YANLIŞ!! 17 Örnek 9

Mantıksal Operatörler && mantıksal AND mantıksal OR! mantıksal NOT Operandlar bir bit olabilir: 0, 1 or x Sonuç bir bit olabilir: 0, 1 or x A = 1; A && B 1 && 0 0 B = 0; A!B 1 1 1 C = x; C B x 0 x 19 Bitsel Operatörler (i) & bitsel AND bitsel OR ~ bitsel NOT ^ bitsel XOR ~^ veya ^~ bitsel XNOR Bit bit işlem yapar. 20 10

Bitsel Operatörler (ii) c = ~a; c = a & b; a = 4 b1010; b = 4 b1100; c = a ^ b; a = 4 b1010; b = 2 b11; 21 Operatörleri İndirgemek & AND OR ^ XOR ~& NAND ~ NOR ~^ veya ^~ XNOR Bir çoklu-bit operandı Bir tek-bitlik sonuç a = 4 b1001;.. c = a; // c = 1 0 0 1 = 1 22 11

Kaydırma Operatörleri >> sağa kaydır << sola kaydır Sonuç ilk operand ile aynı boyuttadır, kaydırılan bit her zaman sıfırla doldurulur a = 4 b1010;... d = a >> 2; // d = 0010 c = a << 1; // c = 0100 23 Birleştirme Operatörü {op1, op2,..} op1, op2,.. yi tek bir sayıya birleştirir Operandlar boyutlandırılmalıdır reg a; reg [2:0] b, c;.. a = 1 b 1; b = 3 b 010; c = 3 b 101; catx = {a, b, c}; caty = {b, 2 b11, a}; catz = {b, 1}; Çoğaltma.. catr = {4{a}, b, 2{c}}; // catx = 1_010_101 // caty = 010_11_1 // YANLIŞ!! // catr = 1111_010_101101 24 12

İlişkisel Operatörler > büyüktür < küçüktür >= büyük eşittir <= küçük eşittir Sonuç bir bitlik bir değerdir: 0, 1 veya x 1 > 0 1 bx <= 0 x 25 Eşitlik Operatörleri == mantıksal eşitlik!= mantıksal eşitsizlik === durum eşitliği!== durum eşitsizliği 0, 1 veya x döndürür 0 veya 1 döndürür 4 b 1z0x == 4 b 1z0x x 4 b 1z0x!= 4 b 1z0x x 4 b 1z0x === 4 b 1z0x 1 4 b 1z0x!== 4 b 1z0x 0 26 13

Şart Operatörü cond_expr? true_expr : false_expr 2x1 mux gibi.. A B 1 0 Y Y = (sel)? A : B; sel 27 +, -, *, /, % Aritmetik Operatörler Herhangi bir operand x olursa sonuç da x olur 28 14

Operatör Öncelikleri Öncelikleri istenilen Şekilde yapmak İçin parantez kullanılır 29 Kombinasyonel Lojiğin Yapısal Modelleri Verilog Primitive leri ve Tasarım Primitive ler : Kombinasyonel lojik kapıların önceden tanımlı 26 adet modeli (örn.) and, nand, or, nor, xor, xnor, buf, not, bufif0, bufif1 Örnek : 1-bit half adder Half adder için verilog tanımlaması ve şeması module Add_Half(sum,c_out,a,b); input a,b; output c_out,sum; xor (sum,a,b); and (c_out,a,b); *Tips: The output port of primitives must be first in the list of ports. 15

Module Port ları / Bazı Dil Kuralları Port un modu yönünü belirtir input, output, inout output lar primitive lerde en solda belirtilir xor (sum,a,b); Değişkenler sayı veya $ ile başlayamaz Değişkenler 1024 karakter uzunluğunda olabilir Tanımlamalarda boşluk kullanılamaz hariç her satır ; ile biter Tasarım ve İç İçe Module ler Örnek : 1-bit full adder module Add_full_0_delay (sum, c_out, a, b, c_in); input a, b, c_in; output sum, c_out; wire w1, w2, w3; Add_Half M1 (w1, w2, a, b); Add_Half M2 (sum, w3, c_in, w1); or (c_out, w2, w3); 16

Doğruluk Tabloları UDP : user defined primitive Sıklıkla kullanılır, çünkü module lerden daha hızlıdır ve daha az depolama alanı gerektirir user-defined primitive çıkışı sayısal olmalıdır primitive mux_prim (mux_out, select, a, b) output mux_out; input select, a, b; table // select a b : mux_out 0 0 0 : 0; 0 0 1 : 0; 0 0 x : 0; 0 1 0 : 1; 0 1 1 : 1; 0 1 x : 1;... endtable endprimitive User-Defined Primitives (UDP) primitive AOI_UDP (y, x_in1, x_in2, x_in3, x_in4, x_in5); output y; input x_in1, x_in2, x_in3, x_in4, x_in5; table // x1 x2 x3 x4 x5 : y 0 0 0 0 0 : 1; 0 0 0 0 1 : 1; 0 0 0 1 0 : 1; 0 0 0 1 1 : 1; 0 0 1 0 0 : 1; 1 1 0 1 1 : 0; 1 1 1 0 0 : 0; 1 1 1 0 1 : 0; 1 1 1 1 0 : 0; 1 1 1 1 1 : 0; endtable endprimitive 34 17

Yapısal Model (Gate Level) Built-in gate primitives: and, nand, nor, or, xor, xnor, buf, not, bufif0, bufif1, notif0, notif1 Kullanım: nand and1(out, in1, in2); 2 girişli NAND, gecikme yok and #2 and1(out, in1, in2, in3); 3 girişli AND, 2 ns gecikme module içine, prosedür dışına yazılırlar 35 Davranışsal Model Procedure ler (i) Procedures = Sırayla çalışan kod bölümleri Prosedür ifadeleri prosedür içinde tanımlanırlar ve sırayla çalışırlar örn. 2x1 mux : begin if (sel == 0) İcra Akışı end Y = B; else Y = A; Prosedürsel atamalar: Y, reg olmalıdır!! 36 18

Davranışsal Model Procedure ler (ii) Module lerde istenildiği kadar procedure kullanılabilir Procedure ler birbirleriyle paralel çalışırlar İki tipte tanımlanabilirler: initial sadece bir kere çalışır always sürekli çalışır (simülasyon bitene kadar) 37 Initial Blokları Sim in 0.anında başlar ve son ifadesi çalışınca sona erer module nothing; initial $display( I m first ); initial begin #50; $display( Really? ); end sim time 0 da görüntülenir sim time 50 de görüntülenir 38 19

Always Blokları sim time 0 da başlar ve sim bitene kadar devam eder 39 Olaylar(i) @ always @(signal1 or signal2 or..) begin.. end Her sinyal değişiminde tetiklenir always @(posedge clk) begin.. end always @(negedge clk) begin.. end clk 0 dan 1 e değiştiğinde tetiklenir clk 1 den 0 a değiştiğinde tetiklenir 40 20

Örnek a b c clk res Y W always @(res or posedge clk) begin if (res) begin Y = 0; W = 0; end else begin Y = a & b; W = ~c; end end 41 Zamanlama(i) initial begin #5 c = 1; #5 b = 0; #5 d = c; end Her atama bir önceki tarafından geciktirilir d c b 0 5 10 15 Time 42 21

Prosedürel İfadeler: if if (expr1) true_stmt1; else if (expr2) true_stmt2;.. else def_stmt; Örn. 4x1 mux: module mux4_1(out, in, sel); output out; input [3:0] in; input [1:0] sel; reg out; wire [3:0] in; wire [1:0] sel; always @(in or sel) if (sel == 0) out = in[0]; else if (sel == 1) out = in[1]; else if (sel == 2) out = in[2]; else out = in[3]; 43 Prosedürel İfadeler : case case (expr) item_1,.., item_n: stmt1; item_n+1,.., item_m: stmt2;.. default: def_stmt; endcase Örn. 4x1 mux: module mux4_1(out, in, sel); output out; input [3:0] in; input [1:0] sel; reg out; wire [3:0] in; wire [1:0] sel; always @(in or sel) case (sel) 0: out = in[0]; 1: out = in[1]; 2: out = in[2]; 3: out = in[3]; endcase 44 22

Prosedürel İfadeler : for for (init_assignment; Cond;step_assignment) stmt; Örn. module count(y, start); output [3:0] Y; input start; reg [3:0] Y; wire start; integer i; initial Y = 0; always @(posedge start) for (i = 0; i < 3; i = i + 1) #10 Y = Y + 1; 45 Prosedürel İfadeler : while Örn. module count(y, start); output [3:0] Y; input start; while (expr) stmt; reg [3:0] Y; wire start; integer i; initial Y = 0; always @(posedge start) begin i = 0; while (i < 3) begin #10 Y = Y + 1; i = i + 1; end end 46 23

Prosedürel İfadeler : repeat repeat (times) stmt; Integer veya değişken olabilir Örn. module count(y, start); output [3:0] Y; input start; reg [3:0] Y; wire start; initial Y = 0; always @(posedge start) repeat (4) #10 Y = Y + 1; 47 Prosedürel İfadeler : forever Tipik örnek: test module lerinde clock üretimi module test; forever stmt; Sim bitene kadar çalışır reg clk; initial begin clk = 0; forever #10 clk = ~clk; end other_module1 o1(clk,..); other_module2 o2(.., clk,..); 48 24

ÖRNEKLER module smpl_circuit(a,b,c,x,y); input A,B,C; output x,y; wire e; and g1(e,a,b); not g2(y, C); or g3(x,e,y); module circuit_with_delay (A,B,C,x,y); input A,B,C; output x,y; wire e; and #(30) g1(e,a,b); or #(20) g3(x,e,y); not #(10) g2(y,c); module stimcrct; reg A,B,C; wire x,y; circuit_with_delay cwd(a,b,c,x,y); initial begin A = 1'b0; B = 1'b0; C = 1'b0; #100 A = 1'b1; B = 1'b1; C = 1'b1; #100 $finish; end //Description of circuit with delay module circuit_with_delay (A,B,C,x,y); input A,B,C; output x,y; wire e; and #(30) g1(e,a,b); or #(20) g3(x,e,y); not #(10) g2(y,c); 25

module circuit_bln (x,y,a,b,c,d); input A,B,C,D; output x,y; assign x = A (B & C) (~B & C); assign y = (~B & C) (B & ~C & ~D); //User defined primitive(udp) primitive crctp (x,a,b,c); output x; input A,B,C; //Truth table for x(a,b,c) = Minterms (0,2,4,6,7) table // A B C : x (Note that this is only a comment) 0 0 0 : 1; 0 0 1 : 0; 0 1 0 : 1; 0 1 1 : 0; 1 0 0 : 1; 1 0 1 : 0; 1 1 0 : 1; 1 1 1 : 1; endtable endprimitive 26