odule top;
wire A1, A0, B1, B2, OUT1, OUT2, OUT4, OUT5, OUT6, OUT7, OUT8;
system_clock #100 clock1(B0);
system_clock #200 clock2(B1);
system_clock #400 clock3(SEL);
system_clock #800 clock4(A0);
system_clock #1600 clock5(A1);
and a1(OUT4, A1, SEL);
and a2(OUT5, A0, SEL);
not n1(OUT6, SEL);
and a3(OUT7, OUT6, B1);
and a4(OUT8, OUT6, B0);
or o1(OUT1, OUT4, OUT7);
or o2(OUT2, OUT5, OUT8);
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial clk=0;
always
begin
#(PERIOD/2) clk=~clk;
end
always@(posedge clk)
if($time>1000)$stop;
endmodule
2015年10月14日 星期三
2015年10月7日 星期三
10/7
module top;
wire A,B,C,D,E,OUT1,OUT2,OUT3,OUT4,OUT5,F;
system_clock#1600 clock(A);
system_clock#800 clock(B);
system_clock#400 clock(C);
system_clock#200 clock(D);
system_clock#100 clock(E);
not a1(OUT1,A);
and a2(OUT2,OUT1,B);
or a3(OUT3,C,D);
not a4(OUT4,OUT3);
and a5(OUT5,OUT4,E);
or a6(F,OUT2,OUT5);
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial clk=0;
always
begin
#(PERIOD/2) clk=~clk;
end
always@(posedge clk)
if($time>1000)$stop;
endmodule
wire A,B,C,D,E,OUT1,OUT2,OUT3,OUT4,OUT5,F;
system_clock#1600 clock(A);
system_clock#800 clock(B);
system_clock#400 clock(C);
system_clock#200 clock(D);
system_clock#100 clock(E);
not a1(OUT1,A);
and a2(OUT2,OUT1,B);
or a3(OUT3,C,D);
not a4(OUT4,OUT3);
and a5(OUT5,OUT4,E);
or a6(F,OUT2,OUT5);
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial clk=0;
always
begin
#(PERIOD/2) clk=~clk;
end
always@(posedge clk)
if($time>1000)$stop;
endmodule
AND 邏輯在路
module top;
wire A,B,C,D,out1,out2,out3;
system_clock#800 clock(A);
system_clock#400 clock(B);
system_clock#200 clock(C);
system_clock#100 clock(D);
and a1(out1,A,B);
and a2(out2,D,C);
and a3(out3,out2,out1);
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial clk=0;
always
begin
#(PERIOD/2) clk=~clk;
end
always@(posedge clk)
if($time>1000)$stop;
endmodule
Verilog 電路設計
電路設計
Verilog 與 VHDL 都是用來設計數位電路的硬體描述語
言,但 VHDL 在1983年被提出後,1987 年被美國國防部和IEEE確定為標準的硬體描述語言。
Verilog 是由 Gateway Design Automation 公司於 1984 年開始發展的, Cadence Design Systems 公司於1990年購併了 Gateway 公司,Cadence 隨後將 Verilog 提交到 Open Verilog International 成為開放公用標準,1995 年 Verilog 被 IEEE 認可成為 IEEE 1364-1995 標準,簡稱為 Verilog-95。此一標準於 2001 年更新後成為 Verilog-2001。
相較於 VHDL 而言,Verilog 的語法較為簡潔,因此經常被專業的數位電路設計者採用,而 VHDL 的使用族群則有較多的初學者。當我們想學習數位電路設計時,經常會難以選擇要用哪一種語言,因為 VHDL 的書籍與教材似乎比 Verilog 多一些,但是 Verilog 的高階設計電路(像是開放原始碼 CPU 等)則比 VHDL 多很多。
筆者是為了要設計 CPU 而學習數位電路設計的,因此決定學習 Verilog 語言,而非 VHDL 語言。雖然筆者也學過 VHDL 語言,但後來發現 Verilog 相當好,相對而言語法簡潔了許多,因此筆者比較偏好 Verilog 語言。
筆者的專長是軟體程式設計,因此熟悉 C, C#, Java, R, JavaScript 等語言,但由於 Verilog 或 VHDL 都是設計數位電路硬體用的語言,因此與那些軟體語言有某種程度上的不同,其中最重要的幾個特性如下:
- Concurrent v.s. Sequential
- Blocking v.s. Nonblocking
- Delayed evaluations v.s. Delayed assignments
這些特性是在學習 Verilog 語言時,必須要特別注意的,一但能清楚的分辨這些特性之後,您就可以從「軟體設計領域」跨入「硬體設計領域」了,對於筆者而言,這是一件相當令人興奮的事情。
2015年9月30日 星期三
hi
module top;
wire A, B, C, OUT1 ,OUT2;
system_clock #400 clock1(A);
system_clock #200 clock2(B);
system_clock #100 clock2(C);
and a1(OUT1, A, B);
and a2(OUT2, OUT1, C);
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial clk=0;
always
begin
#(PERIOD/2) clk=~clk;
end
always@(posedge clk)
if($time>1000)$stop;
endmodule
wire A, B, C, OUT1 ,OUT2;
system_clock #400 clock1(A);
system_clock #200 clock2(B);
system_clock #100 clock2(C);
and a1(OUT1, A, B);
and a2(OUT2, OUT1, C);
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial clk=0;
always
begin
#(PERIOD/2) clk=~clk;
end
always@(posedge clk)
if($time>1000)$stop;
endmodule
訂閱:
文章 (Atom)


