verilog

verilog里面&和|的用法??????????【verilog】|integrator[15:0]這個意思是按位或的意思,就是integrator[15] | integrator[14] | ..........integrator[1] | integrator[0]16個數或的結果 。然后再和integrator[31]與 。懂?

Verilog中 &&和&的區別前者是邏輯與
后面是與門運算(按位與)

5'b10000 && 5'b10001 結果為1
5'b10000 &b'b10001 結果為5'b10000

在verilog中#的用法# 是延遲的意思,井號后面數字是延遲的數量 , 延遲的單位由`timescale控制
比如有:`timescale 1ns/1ps 意思就是時間單位為1ns,精度是1ps
那么,#10.5 就是延遲10.5ns的意思
在同步時序數字邏輯電路的verilog代碼中 , 不能加入“#”進行延遲,這不是代碼編寫階段能決定的

verilog語言中assign怎么用

verilog

文章插圖

assign相當于連線 , 一般是將一個變量的值不間斷地賦值給另一個變量,就像把這兩個變量連在一起,所以習慣性的當做連線用 , 比如把一個模塊的輸出給另一個模塊當輸入 。例如:wire A,B,SEL,L;//聲明4個線型變量assign L=(A&~SEL)|(B&SEL);//連續賦值在assign語句中 , 左邊變量的數據類型必須是wire型 。input和output如果不特別聲明類型,默認是wire類型 。舉例2選1的數據選擇器:module mux2x1_df(A,B,SEL,L);input A,B,SEL;output L;assign L=SEL?A:B;endmodule擴展資料:注意事項assign的功能屬于組合邏輯的范疇 , 應用范圍可概括為以下三點:1、持續賦值;2、連線;3、對wire型變量賦值,wire是線網,相當于實際的連接線,如果要用assign直接連接,就用wire型變量 。wire型變量的值隨時變化 。其實以上三點是相通的 。要更好的把握assign的使用 , Verilog中有幾個要點需要深入理解和掌握:1、在Verilog module中的所有過程塊(如initial塊和always塊)、連續賦值語句(如assign語句)和實例引用都是并行的 。在同一module中這三者出現的先后順序沒有關系 。2、只有連續賦值語句assign和實例引用語句可以獨立于過程塊而存在于module的功能定義部分 。3、連續賦值assign語句獨立于過程塊,所以不能在always過程塊中使用assign語句 。
verilog 中begin 和end 的詳細用法
verilog

文章插圖

1、首先,在項目上右鍵,點擊New Source創建新的代碼文件 。2、選擇User Document創建自定義的文本文件,文件名和后綴隨意 。3、創建好后,在下方切換到Files面板,雙擊打開該文件,按照自己喜歡的形式輸入數據 。4、數據文件寫好后,在項目上右鍵,點擊New Source,接著選擇Verilog Test Fixture,輸入文件名并繼續,選擇待測模塊,接著創建文件 。5、雙擊打開該文件,看到待測試模塊輸入對應了一些reg寄存器類型,輸出部分對應了一些wire類型 。添加兩個parameter常量 , 接著添加計數變量J用于for循環,添加一個向量數組用于存放文件讀取的數據 。6、如圖是程序自動生成的實例化和連接待測模塊的代碼,在下面的initial begin ... end之間編寫測試代碼就可以了 。
Verilog中&與&&的區別
verilog

文章插圖

Verilog中&與&&的區別為:性質不同、計算結果不同、參數不同 。一、性質不同1、&:&是位運算符 , 表示是按位與 。2、&&:&&是邏輯運算符,表示是邏輯與 。二、計算結果不同1、&:&的計算結果為十進制數 。2、&&:&&的計算結果為true或false 。三、參數不同1、&:&的參數為進制數 , 可以是二進制、十進制、十六進制數,也可以是整數、負數 。2、&&:&&的參數為進制數,也可以是比較公式,將比較公式值作為最終的參數 。
verilog語言中~和!區別1.~ 按位取反 比如:11110 取反后衛00001
2.!邏輯取反,如!非0 為0 !0 為1

初學者請教Verilog.不同的module可以放在同一個.V文件里嗎1.分開放,這是verilog coding style的一種良好習慣,每個文件里面只包含一個獨立的module
2.把所有這些文件放在同一個目錄下,在top文件里實例化這些module就可以調用了
3.top文件和新建一個module一樣的,不過模塊里主要是定義連線和實例化子模塊,你隨便找本verilog的教程就有啦:)
實例化是這樣的,greycode是你的module名字,G1是實例化名字(可任意),后面括號里的東東需要跟你定義的端口順序一致 。建議不要采用這種順序綁定的形式,建議采用端口命名綁定方式
你可以先找本基本的verilog語法書看看,上手很快的

verilog語言中任務和函數的區別?任務和函數有助于簡化程序,有點類似與Fortran語言的subroutine和function 。

任務和函數的共同點:

1.任務和函數必須在模塊內定義,其作用范圍僅適用于該模塊 , 可以在模塊內多次調用 。

2.任務和函數中可以聲明局部變量 , 如寄存器,時間,整數,實數和事件,但是不能聲明線網類型的變量 。

3.任務和函數中只能使用行為級語句 , 但是不能包含always和initial塊 , 設計者可以在always和initial塊中調用任務和函數 。

任務和函數的不同點:
函數任務
函數能調用另一個函數,但是不能調用任務任務可以調用另一個任務 , 也可以調用函數
函數總是在仿真時刻0開始任務可以在非零時刻開始執行
函數一定不能包含任何延遲,事件或者時序控制聲明語句任務可以包含延遲 , 事件或者時序控制聲明語句
函數至少要有一個輸入變量,也可以有多個輸入變量任務可以沒有或者有多個輸入,輸出,輸入輸出變量
函數只能返回一個值,函數不能有輸出或者雙向變量任務不返回任何值 , 或者返回多個輸出或雙向變量值

由上述的特點決定:函數用于替代純組合邏輯的verilog代碼,而任務可以代替verilog的任何代碼 。

8.2任務

任務使用關鍵字task和endtask來進行聲明,如果子程序滿足下面任何一個條件,則必須使用任務而不能使用函數 。

1.子程序中包含有延遲,時序或者事件控制結構

2.沒有輸出或者輸出變量超過一個

3.沒有輸入變量

例:

module operation;
parameter delay=10;
reg [15:0] A,B, AB_AND,AB_OR,AB_XOR;
always @(A or B)
begin
bitwise_ope(AB_AND,AB_OR,AB_XOR,A,B);
end
taskbitwise_oper;
output [15:0] ab_and,ab_or,ab_xor;
input [15:0] a,b;
begin
#delay ab_and=a&b;
ab_or=a|b;
ab_xor=a^b;
end
endtask
always @(posedge clk)
bitwise_xor(ef_xor,e,f);
always @(posedege clk2)
bitwise_xor(cd_xor,c,d)
task autumatic bitwise_xor;
output ab_xor;
inputa,b;
begin
ab_xor=a^b;
end
endtask
endmodule

自動(可重入)任務:verilog任務中所有聲明的變量地址空間都是靜態分配的,因此如果在一個模塊中多次調用任務時,可能會造成地址空間的沖突,為了避免這個問題,verilog通過在task關鍵字后面添加automatic使任務稱為可重入的 , 這時在調用任務時,會自動給任務聲明變量分配動態地址空間,這樣有效避免了地址空間的沖突 。

8.3 函數

函數使用關鍵字function和endfunction定義,對于子程序,如果滿足下述所有條件則可以用函數來完成:

1.在子程序中不含有延遲時序或者控制結構
2.子程序只有一個返回值
3.至少有一個輸入變量
4.沒有輸出或者雙向變量
5.不含有非阻塞賦值語句

例:

module parity;
reg [31:0] addr;
reg parity;
always @(addr)
begin
parity=calc_parity(addr);
end
function calc_parity;
input [31:0] addr;
begin
calc_parity=^addr;
end
endfunction
endmodule

跟任務調用一樣,在模塊中如果調用多次函數 , 也會碰到地址沖突的問題,因此也引入automatic關鍵字來對函數可重用性聲明 。沒有進行可重用性聲明的函數不可以多次或者遞歸調用 , 進行了可重用性聲明的函數可以遞歸調用 。

常量函數和帶符號函數(函數聲明時加signed關鍵字說明)

module ram;
parameter RAM_DEPTH=256;
input [clogb2(RAM_DEPTH)-1:0] addr;//clogb2函數返回值為8
function integer clogb2(input integer depth);
begin
for(clogb2=0; depth>0;clogb2=clogb2+1)
depth=depth>1;
end
endfunction
endmodule

練習:用兩種不同的方法設計一個功能相同的模塊,完成4個8位2進制輸入數據的冒泡排序 。第一種,用純組合邏輯實現;第二種,假設8位數據按照時鐘節拍串行輸入,要求時鐘觸發任務的執行,每個時鐘周期完成一次數據交換的操作 。

//----------------- 第一種 ------------------

module sort4(ra,rb,rc,rd,a,b,c,d);

output[7:0] ra,rb,rc,rd;

input[7:0] a,b,c,d;

reg[7:0] ra,rb,rc,rd;

reg[7:0] va,vb,vc,vd;

always @ (a or b or c or d)

begin

{va,vb,vc,vd}={a,b,c,d};

change(va,vb);

change(vb,vc);

change(vc,vd);

change(va,vb);

change(vb,vc);

change(va,vb);

{ra,rb,rc,rd}={va,vb,vc,vd};

end

task change;//make a task of comparing

inout[7:0] x,y;

reg[7:0] tmp;

if(x>y)

begin

tmp=x;

x=y;

y=tmp;

end

endtask

endmodule

//----------------- 第二種 ------------------

module sort4(clk,reset,ra,rb,rc,rd,a);

output[7:0] ra,rb,rc,rd;

input[7:0] a;

input clk,reset;

reg[7:0] ra,rb,rc,rd;

reg[7:0] va,vb,vc,vd;

always @ (posedge clk)

begin

if(!reset)

begin

va<=0;vb<=0;vc<=0;vd<=0;

end

else

va<=a;

end

always @ (posedge clk)

begin

change(va,vb);

change(vb,vc);

change(vc,vd);

change(va,vb);

change(vb,vc);

change(va,vb);

{ra,rb,rc,rd}={va,vb,vc,vd};

end

task change;//make a task of comparing

inout[7:0] x,y;

reg[7:0] tmp;

if(x>y)

begin

tmp=x;

x=y;

y=tmp;

end

endtask

endmodule

verilog中這幾種寫法有區別嗎?我覺得沒什么區別啊 ,  寫代碼的時候遇到幾個語法問題,在此向各位求助一下<=是非堵塞賦值,也就是一個塊里的所有<=語句都是同時運行 。
第二個寫法里,不管出現何種情況,cnt_2都會被賦值兩次 。但這兩次賦值是同時的 。你想,同時賦兩個不同的值,這個電路怎么畫?
也就是說,一個塊里,一個變量在任何情況下都只能被<=賦值一次 。

因為你編的實際上是電路,不能用軟件的思想去想問題 。

在Verilog語言中#是什么意思?前仿真用的,無法綜合的 。
例如:#5
data_in
=
data_tmp;
就是延遲5個時間單位后,在進行復制 。
具體延遲多少,得看你的
timescale
`timescale
n/n
根據這個來看你具體延遲的時間

在Verilog語言中#是什么意思表示延時



剛開始學verilog,請問#號在verilog中都能表達什么意思?井號就是延遲的意思 , 無論在哪里,但是不能被綜合,只對仿真的時候可以產生延時效果

Verilog中,#符號是什么意思#5的概念是延遲的意思 。但是是行為級描述 綜合時將被過濾 。

一般#+數字的組合在仿真器中產生一定的延遲 。延遲結構如下~~

首先`timescale 1ns/100ps 這個是整個延遲的定義 。`timescale是關鍵字,然后后面的兩位時間 第一位是用來表示你的延遲因子的 。第二位用來表示步進時間 。

舉例:

`timescale 1ns/100ps
......

always(這里用forever亦可)
#10 clk=~clk;

那么也就是說,10個延遲因子時clk取反 。也就是說10納秒時clk取反 。所以你就得到一個50Mhz的時鐘 。
后面的100ps代表的意思是機器仿真的步進時間,當你寫1ns/100ps時 。在屏幕上顯示的1ns時間內 。機器做10次的運算 。
如果不能直觀理解 。那么就嘗試一下`timescale 1ns/1ps的區別 。你就知道了 。

千萬注意的是:這個只能在仿真工具中運用 。綜合成電路時 。你不要希望有這類延遲存在 。

在verilog中#的用法#
是延遲的意思,井號后面數字是延遲的數量 , 延遲的單位由`timescale控制
比如有:`timescale
1ns/1ps
意思就是時間單位為1ns,精度是1ps
那么 , #10.5
就是延遲10.5ns的意思
在同步時序數字邏輯電路的verilog代碼中,不能加入“#”進行延遲,這不是代碼編寫階段能決定的

"&"在Verilog中的含義一個“&”放在兩個數據之間時,表示按位與,用于兩個多位寬數據操作 。例如:
reg [31:0] a;
reg [31:0] b;
wire c;
assign c = a | b;
以上代碼表示“a”與“b”先按位分別與,再把結果交給“c” 。
如果一個“&”放在一個操作數前面,則表示縮位與 。例如:
assign c = &a;
如果是“&&”放在兩個數之間,則表示邏輯與 , 邏輯與操作只能是兩個1位寬的數 。對于多位寬的數據進行邏輯與操作,則不能的編譯器和綜合器對其有不同的解釋 , 所以應該避免這樣用 。
兩個“&&”不能放在一個數之前進行操作 。

verilog中的邏輯與(&&)在vhdl中怎么表示?都是and
1位和1位運算就是按位與
"00100"and"01001"出的結果就是按位與
vhdl這個沒有分開

關于在if()里面用& 和&& | 和 ||的區別...你反了一個嚴重的錯誤~~~~~~&和|的值不是blooean的~~~~~~~~而是一個int .....
if()里只接受blooean型的結果 所以
if(a!=null&a.Length>0) {}

if(a!=null | a.Length==0) {}

這些都不能通過編譯(如果是C語言的話可以通過編譯......因為c語言了if括號的值可以是數組1為真0為假)..
其實你上邊的例子我沒有測試 不過可能會通過編譯 因為有運算符的優先級不過如果這么寫的話
if((a!=null )| (a.Length==0)) {}是肯定通不過編譯的

verilog中@是什么意思?有什么用?看看英文意思就能明白、助記 。@讀作at, 當...的時候 。always, 總是 , 一直 。
always @(posedge CLK), 意思是:當CLK信號上升沿的時候,總是(執行下述語句)

verilog里的位寬是什么概念?一、verilog位寬的概念:
verilog語法上不要求一致 賦值語句等號右端位寬大則截位 位寬少則補0(高位補零) 。位寬是顯存在一個時鐘周期內所能傳送數據的位數,位數越大則瞬間所能傳輸的數據量越大,這是顯存的重要參數之一 。

二、verilog的簡單介紹:
Verilog是一種硬件描述語言(HDL:Hardware Description Language),以文本形式來描述數字系統硬件的結構和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,還可以表示數字邏輯系統所完成的邏輯功能 。Verilog HDL和VHDL是世界上最流行的兩種硬件描述語言,都是在20世紀80年代中期開發出來的 。前者由Gateway Design Automation公司(該公司于1989年被Cadence公司收購)開發 。兩種HDL均為IEEE標準 。

verilog中%2t是什么意思?% 用在算數運算中是取模操作符a % b 按照a 和 b中的長度長的補齊 。兩個參數都為有符號數結果為有符號數,否則為無符號數 。用在$display語句里面是轉意操作符%b %B二進制%o %O八進制 %d %D十進制 %h %H十六進制 %e %E %f %F %g %G 實數 %c %C字符 %s %S字符串 %v %V二進制和強度%t %T時間 %m %M層次實例

在Verilog里邊 always@(*)語句是什么意思?
verilog

文章插圖

在Verilog中always@(*)語句的意思是always模塊中的任何一個輸入信號或電平發生變化時,該語句下方的模塊將被執行 。1、always語句有兩種觸發方式 。第一種是電平觸發,例如always @(a or b or c),a、b、c均為變量 , 當其中一個發生變化時,下方的語句將被執行 。2、第二種是沿觸發,例如always @(posedge clk or negedge rstn),即當時鐘處在上升沿或下降沿時,語句被執行 。3、而對于always@(*),意思是以上兩種觸發方式都包含在內,任意一種發生變化都會觸發該語句 。擴展資料:Verilog語言中的兩種過程:always過程和initial過程 。過程可以是包含時序的過程描述,而不包含時序的過程還可以表達組合邏輯 。always過程從關鍵字always開始,可以連續多次運行,當過程的最后一行代碼執行完成后,再次從第一行代碼開始執行 。如果沒有使用系統任務$finish,always過程將不斷循環執行 。initial過程從關鍵字initial開始,它只能執行一次 。一個模塊中可以包含多個過程,各個過程相互之間是并發執行的 。不過,過程不能夠嵌套使用 。如果過程中有多個語句,則需要使用關鍵字begin、end或fork、join將它們組成一個代碼塊 。這兩種關鍵字組合代表著順序代碼塊和并行代碼塊,后面的部分會講述這兩種結構 。參考資料來源:百度百科-verilog
verilog中遞歸函數的例子中%0d是什么意思在%后面加一個“0”的作用是自動調整顯示輸出數據的寬度 。即輸出結果總是用最少的位數來顯示結果值 。

Verilog中“&&”和“&”的區別是什么?
verilog

文章插圖

一、意思不同1、&&:代表邏輯與 。2、&:代表與門運算(按位與) 。二、計算方式不同1、&&:5'b10000 && 5'b10001 結果為1 。2、&:5'b10000 & b'b10001 結果為5'b10000 。擴展資料Verilog的設計初衷是成為一種基本語法與C語言相近的硬件描述語言 , C語言在Verilog設計之初,已經在許多領域得到廣泛應用,C語言的許多語言要素已經被許多人習慣 。一種與C語言相似的硬件描述語言,可以讓電路設計人員更容易學習和接受 。不過 , Verilog與C語言還是存在許多差別 。另外 , 作為一種與普通計算機編程語言不同的硬件描述語言 , 它還具有一些獨特的語言要素 , 例如向量形式的線網和寄存器、過程中的非阻塞賦值等 。總的來說,具備C語言的設計人員將能夠很快掌握Verilog硬件描述語言 。參考資料來源:百度百科-Verilog
verilog中$符號是什么意思?$是一種標識符 , 可以用來命名變量,就和 下劃線 _ 似的 , 只是不能放在首位,就如你給的代碼所示 。也可以被用來標識系統任務 , 在系統任務名稱前加$使之與用戶定義的任務和函數相區分,比如常用的$display,$monitor , $time等

verilog中的^表示什么意思??表示什么都可以,例如:5'b00???表示匹配的值高三位一定要是兩個0,而低三位則可以是任意值,包括0、1、Z等

verilog中@ (*)是什么意思@*和@(*):它們都表示對其后語句塊中的所有輸入變量的變化是敏感的 。

在veriloghdl里面 # 代表什么 veriloghdl#+數字 , 一般表示延遲時間的如:assign #5 data_temp=din;表示延遲5個時鐘單位 , 將din賦給data_temp;如果是*.do文件的話 , 就表示注釋的意思,如vlog *.v若前有# vlog *.v表示注釋這一句

請教這個verilog HDL中的parameter中的,'d0 'd1等是什么意思?謝謝!'d0表示十進制數0,'d1表示十進制數1,'d19表示十進制數19 。parameter語句用于聲明常量,parameter S0='d0,S1='d1,...... , S19='d19; 聲明標識符S0代表常量十進制數0、標識符S1代表常量十進制數1、......標識符S19代表常量十進制數19 。

verilog中cnt <= 20'd0;是什么意思<=是非阻塞賦值,用于時序邏輯,在語句執行完以后,cnt被賦值為20bit的十進制數0 。
和阻塞賦值=不同的是 , 使用=賦值時,語句執行到此處后立即賦值 。

verilog語言中的Count1 <= 23'd0是什么意思對Count1賦23位十進制的0

verilog hdl語言中.a(d0)是什么意思這是調用模塊時用到的
定義的wire型d0連到了這個模塊的接口a上

verilog中的#是什么意思:`timescale 1ns/10ps; reg wave;parameter d; #(d) wave=0;#(2*d) wave=1.'timescale 1 ns/ 1 ps 一般用在VerilogHDL編程最開始聲明的地方,意思是時間單位為1ns,精度為1ps.
如果程序后面要用到延時(比如生成clk),那么你可以使用“#d”來直接調用這個時間,例如#3就是“延時3ns”的意思,但是精度為1ps的偏差,一般精度沒有多大影響,主要是使用前面的時間單位1ns.

verilog HDL中=&是什么意思?急急急!這里=和&是分開的, &是對count進行按位與操作, 得到一個邏輯值(0或者1)
=表示將&count得到的結果賦值給div_clkout

Verilog 里面 Q <= 4'b0 是什么意思<=在不同的地方有不同的意思,這里是非阻塞賦值,一般用在時序邏輯里,意思是在同一進程或塊語句里所有的非阻塞賦值語句同時進行的,=是阻塞賦值語句,要等這句執行完才能進行下一句的操作. <=在進行邏輯運算的時候也作為邏輯運算符

verilog中a<=(b==1);是什么意思?后面==是判斷是否相等,如果相等返回1,否則返回0 。然后將這個返回值通過非阻塞賦值賦給a 。也就是說b等于1的話,賦給a值1;b等于其他任何值,a等于0 。

t<={{8x[7]}},x}; verilog中這條語句是什么意思,求高手解答?x[7]這一位被重復8次,然后和x拼一起

verilog <=運算符是什么意思?“<=”與“=”都是賦值,前者是非阻塞賦值,后者是阻塞賦值 。它們的區別不僅在于使前仿與后仿結果一致 , 更影響到綜合時的硬件映射 。

FPGA高手,解答一下assign led_d3 = d1 ? 1'b1 : 1'b0;什么意思?謝謝e=a?b:c------------------如果a為真(非0即為真),則將b的值賦給e , 否則將c的值賦給e 。

那么:
led_d3=d1 ? 1'b1 : 1'b0表示判斷d1的值真假,為真則把1賦給led_d3,為假則賦0.

assign 表示直接連線 , 即始終是這個關系,不管時鐘是何種狀態 。

請采納哈?。?

verilog連續賦值語句assign a=b==8;什么意思樓上正解,需要補充的是,這種寫法的可讀性很差,作為工程師來講,不應該有這種寫法 。verilog不是用來玩這些小把戲用的,但它可能出現在學校里的考試當中,用來考察學生對verilog語法的理解程度,僅此而已 。

請教verilog的語句解析,大致說下這段語言的意思首先,使用拼接運算符完成了一個66位寄存器out_data的拼接運算,其高位到低位的組成依次為1'b1 , ……,1'b0;字面上就是起始位是1,結束位是0,中間有check_bit校驗位,可能包含多個位,out_data_temp字面可能是溫度數據的位

verilog語言中 assign y=e?a:1’bz; assign b=(~e)?y:1’bz; 怎么理解?1'bz表示是一位二進制高阻態 。b是二進制,z是高阻態 。

關于verilog 的assign關于問題補充:其實如果想做賦值的話,一般都會習慣性地定義一下reg型變量,然后在always語句塊內直接賦值就可以了,類似于:reg a;a=1 。很少有人定義wire型變量然后再賦值的,wire型一般都是在上層模塊中調用下層模塊的輸入輸出時才會定義的類型 , 一般都是這樣 。而assign命令一般都習慣性地當做連線用,比如想把一個模塊的輸出給另一個模塊當輸入,就可以assign Input=Output;
至于時鐘那兩句,其實那個也是習慣性的寫法 , 一般都習慣使用時鐘信號同步整個模塊,而時鐘信號就是從testbench文件中發出的 。特別是對于大的工程 , 這樣的設定會方便各個模塊之間的同步 。我可不是什么工程師,只不過是剛學了verilog一年的研究生而已,呵呵
初學者吧?你寫的這個有太多不規范的地方= =
雖然assign可以這樣用,不過很少有人這么寫 。assign相當于連線,一般它的用處是將一個變量的值不間斷地賦值給另外一個 , 就像把這兩個變量連在一起一樣 。
替你寫了個testbench,應該還算是比較規范的 , 你可以參考我的改一下 。如果還不行的話你把你的源代碼給我我可以幫你看一下
`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:11:03:54 07/01/2010
// Design Name:tb_bin27seg
// Module Name:D:/Xilinx/11.1/myproject/test12/testbench.v
// Project Name:test12
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: tb_bin27seg
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////

`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:搞嚇米飛機
//
// Create Date:17:14:55 05/08/2010
// Design Name:test
// Module Name:D:/Xilinx/11.1/myproject/convolution/convolutiontest.v
// Project Name:convolution
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: convolution
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////

module test;

// Inputs
reg clk;
reg din;
reg en;

// Outputs
wire dout;


// Instantiate the Unit Under Test (UUT)
bin27seg tb(
.din(din),
.en(en),
.dout(dout));

initial begin
// Initialize Inputs
clk=0;
din=0;
en=1;

// Wait 100 ns for global reset to finish
#100;
en=0;

// Add stimulus here


end
always #4 Clk=~Clk;
always@(posedge clk)
begin
if(din<=4'b1111)
begin
din=din+1;
end
else
begin
din=0;
end

end
endmodule