設(shè)計(jì)背景:
Verilog HDL語言分為面向綜合和面向仿真兩大類語句,且可綜合語句遠(yuǎn)少于仿真語句,讀者可能會(huì)有可綜合設(shè)計(jì)相對(duì)簡單的感覺。然而事實(shí)剛好與此相反,這是因?yàn)椋菏紫龋删C合設(shè)計(jì)是用來構(gòu)建硬件平臺(tái)的,因此對(duì)設(shè)計(jì)的指標(biāo)要求很高,包括資源、頻率和功耗,這都需要通過代碼來體現(xiàn);其次,在實(shí)際開發(fā)中要利用基本Verilog HDL語句完成種類繁多的硬件開發(fā),給設(shè)計(jì)人員帶來了很大的挑戰(zhàn)。所有的仿真語句只是為了可綜合設(shè)計(jì)的驗(yàn)證而存在。為了讓讀者深入地理解可綜合設(shè)計(jì)、靈活運(yùn)用已學(xué)內(nèi)容,本章將可綜合設(shè)計(jì)中的基本知識(shí)點(diǎn)和難點(diǎn)提取出來,融入Verilog HDL語法以及開發(fā)工具等諸多方面,以深入淺出的方式向讀者說明設(shè)計(jì)中的難點(diǎn)本質(zhì)。
設(shè)計(jì)原理:
本次的設(shè)計(jì)主要是用來理解組合和時(shí)序邏輯的關(guān)系和寫法,通過描述組合和時(shí)序邏輯電路來仿真出對(duì)用的仿真波形,然后來分析其邏輯特點(diǎn)和相應(yīng)的關(guān)系。
設(shè)計(jì)架構(gòu)圖:
設(shè)計(jì)代碼:
組合邏輯設(shè)計(jì)模塊
0modulestudy(data_1,data_2,data_out);//端口列表
1
2 inputdata_1,data_2;//輸入
3 outputregdata_out;//輸出
4
5 //描述一個(gè)組合邏輯電路
6 always@(*)
7 begin
8 data_out =data_1 &&data_2;//與邏輯
9 end
10
11endmodule
測試模塊
0`timescale1ns/1ps
1
2moduletb;
3
4 regdata_1,data_2;//定義輸入寄存器
5 wiredata_out;//定義輸出線型
6
7 study study_dut(//設(shè)計(jì)模塊端口例化
8 .data_1(data_1),
9 .data_2(data_2),
10 .data_out(data_out)
11 );
12
13 initialbegin//描述數(shù)據(jù)流的變化
14 data_1 =0;data_2 =0;
15 #200
16 data_1 =1;data_2 =0;
17 #200
18 data_1 =0;data_2 =1;
19 #200
20 data_1 =1;data_2 =1;
21 #200
22 data_1 =0;data_2 =0;
23 #200
24 $stop;//系統(tǒng)任務(wù)停止
25 end
26
27endmodule
組合邏輯仿真圖:
在仿真波形中可以清楚的看到輸入數(shù)據(jù)流的變化順序,數(shù)據(jù)翻轉(zhuǎn)后,輸出立馬改變沒有延遲。
時(shí)序邏輯設(shè)計(jì)模塊
0modulestudy(clk,data_1,data_2,data_out);//端口列表
1
2 inputclk,data_1,data_2;//輸入
3 outputregdata_out; //輸出
4
5 //描述一個(gè)組合邏輯電路
6 always@(posedgeclk)
7 begin
8 data_out <=data_1 &&data_2;//與邏輯
9 end
10
11endmodule
測試模塊
0`timescale1ns/1ps
1
2moduletb;
3
4 regclk,data_1,data_2;//定義輸入寄存器
5 wiredata_out;//定義輸出線型
6
7 study study_dut(//設(shè)計(jì)模塊端口例化
8 .clk(clk),
9 .data_1(data_1),
10 .data_2(data_2),
11 .data_out(data_out)
12 );
13
14 initialbegin//描述數(shù)據(jù)流的變化
15 clk =1;data_1 =0;data_2 =0;
16 #200.1
17 data_1 =1;data_2 =0;
18 #200.1
19 data_1 =0;data_2 =1;
20 #200.1
21 data_1 =1;data_2 =1;
22 #200.1
23 data_1 =0;data_2 =0;
24 #200
25 $stop;//系統(tǒng)任務(wù)停止
26 end
27
28 always#10clk =~clk;
29
30endmodule
時(shí)序邏輯仿真圖:
在仿真中可以清楚的看到,在時(shí)序邏輯中,我們或綜合處寄存器,也就是說得到的數(shù)據(jù)會(huì)在寄存器中存一個(gè)上升沿,因?yàn)橛玫氖巧仙赜|發(fā),在波形中一看到。當(dāng)兩個(gè)輸入都為高電平的時(shí)候輸出也應(yīng)該為高電平,可是沒有立馬的變?yōu)楦唠娖?,要等下一個(gè)上升沿來了才能變?yōu)楦唠娖健?/span>
這樣就直觀的看清楚了組合和時(shí)序邏輯綜合出的波形的差距,也就是一個(gè)有綜合出是線型,一個(gè)是寄存器。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22033瀏覽量
617756 -
時(shí)序邏輯
+關(guān)注
關(guān)注
0文章
39瀏覽量
9375
發(fā)布評(píng)論請(qǐng)先 登錄
一文解析FPGA的片上資源使用情況(組合邏輯及時(shí)序邏輯)

FPGA之組合邏輯與時(shí)序邏輯、同步邏輯與異步邏輯的概念
soc中的組合邏輯和時(shí)序邏輯應(yīng)用說明
勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載25:組合邏輯與時(shí)序邏輯
【技巧分享】時(shí)序邏輯和組合邏輯的區(qū)別和使用
在FPGA中何時(shí)用組合邏輯或時(shí)序邏輯
為什么FPGA可以用來實(shí)現(xiàn)組合邏輯電路和時(shí)序邏輯電路呢?
FPGA中組合邏輯和時(shí)序邏輯的區(qū)別
組合邏輯電路和時(shí)序邏輯電路比較_組合邏輯電路和時(shí)序邏輯電路有什么區(qū)別

數(shù)字設(shè)計(jì)FPGA應(yīng)用:時(shí)序邏輯電路FPGA的實(shí)現(xiàn)

數(shù)字設(shè)計(jì)FPGA應(yīng)用:FPGA的基本邏輯結(jié)構(gòu)

組合邏輯電路和時(shí)序邏輯電路的學(xué)習(xí)課件免費(fèi)下載

FPGA時(shí)序邏輯和組合邏輯的入門基礎(chǔ)教程

組合邏輯電路和時(shí)序邏輯電路的區(qū)別和聯(lián)系

評(píng)論