一、時(shí)序設(shè)計(jì)
方法1.通過狀態(tài)機(jī)來(lái)實(shí)現(xiàn),通過verilog控制FPGA,讓它該快的時(shí)候快,該慢的時(shí)候慢。
方法2.FPGA中運(yùn)行CPU
把邏輯控制順序復(fù)雜的事情用C代碼來(lái)實(shí)現(xiàn),而實(shí)時(shí)處理部分用verilog實(shí)現(xiàn),并且verilog這部分可以被C代碼控制。Xilinx的FPGA目前支持的CPU有Microblaze,ARM9,POWERPC,其中Microblaze是軟核,其余的兩款是硬核。
(1)軟核就是用代碼實(shí)現(xiàn)的CPU核,配置靈活;
(2)硬核就是一塊電路,已經(jīng)做好了,不能再發(fā)生變化;
軟核靈活性好,但是要占用FPGA的資源。硬核不占用FPGA的資源,速度和性能更好。比如Xilinx的DDR內(nèi)存控制器,就是一種硬核,其運(yùn)行速度很高。
二、基礎(chǔ)語(yǔ)法
1. always @(),括號(hào)里是*,表明是一直敏感的;
2. (1) <= ?非阻塞賦值,在一個(gè)always模塊中,所有語(yǔ)句一起更新
(2) = 阻塞賦值,或者給信號(hào)賦值,如果在always模塊中,這條語(yǔ)句被立刻執(zhí)行。
非阻塞賦值
always @(posedge clk)begin a <= b; ? ? ? ?c <= a; ? ? end
執(zhí)行結(jié)果是a的值是b,c的結(jié)果依舊是a
阻塞賦值
always @(posedge clk)begin a = b; c = a; end
執(zhí)行結(jié)果a的值是b,c的結(jié)果也是b。
一般我們使用的都是非阻塞的賦值語(yǔ)句,這樣可以很好地控制同步性。
3、預(yù)處理命令 `include file1.v `define X=1; `define Y; `ifdef Y Z = 1; `else Z = 0; `endid
有時(shí)候需要一些公共的宏參數(shù),我們可以放在一個(gè)文件中,比如文件名XXX.v,。那么我們就可以 `include XXX.v ,就可以包含文件中定義的宏參數(shù)
三、小練習(xí)
1.加法器的設(shè)計(jì)
module adder( input [3:0] a, input [3:0] b, input cin, output [3:0] sum, output cout ); assign {cout,sum} = a + b + cin; endmodule
RTL視圖
RTL 技術(shù)原理圖
仿真代碼
`timescale 1ns / 1ps //1ns的仿真刻度,1ps的仿真精度 ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2017/10/22 1058 // Design Name: // Module Name: simu // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module simu( ); reg [3:0] a; reg [3:0] b; reg cin; wire cout; wire [3:0] sum; reg [4:0] i,j; //中間變量 adder inst( .a(a), .b(b), .cin(cin), .cout(cout), .sum(sum) ); initial begin a =0; b=0; cin=0; for(i=1;i<16;i=i+1) #10 a = i; end initial begin for(j=1;j<16;j=j+1) #10 b = j; end initial begin $monitor($time,,,"%d + %d + %b = {%b,%d}",a,b,cin,cout,sum); #160 $finish; //160ns 后仿真結(jié)束 end endmodule
仿真波形
打印輸出結(jié)果
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602977 -
Xilinx
+關(guān)注
關(guān)注
71文章
2167瀏覽量
121298 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3019瀏覽量
74002 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110074 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
492瀏覽量
27528
原文標(biāo)題:Xilinx FPGA 學(xué)習(xí)筆記
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論