????????上次介紹了如何創(chuàng)建工程,這次來實(shí)現(xiàn)一個(gè)波形的產(chǎn)生,vivado用的是Verilog語言,語法很簡單就不單獨(dú)說了,慢慢在程序里很快就學(xué)會(huì)了,大概的介紹我粘在文章最后,想看就看不想看直接實(shí)操也行。
? ? ? ? 在創(chuàng)建的主程序中找到這個(gè)模塊的括號(hào),我把括號(hào)內(nèi)容理解為這個(gè)模塊的端口,如下面的程序所示,有一個(gè)時(shí)鐘端口,一個(gè)復(fù)位端口,和一個(gè)輸出端口,逗號(hào)隔開,最后一個(gè)不用加。紅線是因?yàn)闆]對(duì)他們進(jìn)行聲明,我習(xí)慣在括號(hào)外進(jìn)行聲明,這樣之后的例化可以直接復(fù)制(例化會(huì)在后面說)
下面對(duì)信號(hào)進(jìn)行聲明,時(shí)鐘信號(hào)和復(fù)位信號(hào)肯定是需要輸入的,輸出信號(hào)輸出,如圖,這時(shí)候報(bào)錯(cuò)就沒有了,1.input,output表示輸入或輸出。2.表示聲明的名字,每個(gè)語句要加分號(hào)3.表示這個(gè)變量占多少個(gè)二進(jìn)制數(shù),本文這個(gè)是八位二進(jìn)制數(shù)(0,1,2,3,4,5,6,7八位),也就是輸出要小于等于255
?接下來定義信號(hào)類型,設(shè)計(jì)中所有的信號(hào)類型定義,只有 reg 和 wire 兩種,現(xiàn)在先知道,下面會(huì)說他兩個(gè)的區(qū)別。定義的時(shí)候同樣考慮信號(hào)的大小,不寫的話默認(rèn)為一位,如果不定義信號(hào)類型默認(rèn)為wire型。
下面編寫程序的主要模塊,1.直接先照抄,表示時(shí)序邏輯。2.(posedge clk or negedge rst_n)叫做敏感列表 ,也就是說每逢時(shí)鐘的上升沿和復(fù)位信號(hào)的下降沿,都要執(zhí)行一遍這個(gè)程序。3.begin end 表示這之間是一個(gè)整體,里面的語句順序執(zhí)行。
中間為了方便我就直接把這個(gè)時(shí)鐘和復(fù)位的值減了一下,其中可以發(fā)現(xiàn),我使用了一個(gè)'<='進(jìn)行賦值,這叫做非阻塞賦值,一個(gè)小技巧,這種賦值方式只用在?always@(posedge clk or negedge rst_n) 這里面,其他的用等號(hào)賦值,同時(shí)'<='所指的變量要用reg進(jìn)行定義,也就是reg型,其他都是wire型。這樣我們的主程序就寫完了,ctrl+s保存。
?下面我們開始寫測(cè)試文件進(jìn)行仿真,直接上代碼你們看注釋吧,基本每句都解釋了
module tb_project_2;
reg clk ;//定義變量,下邊clk被‘<=’指著,所以用reg型
reg rst_n ;
wire out ;//輸出沒被指著所以是wire型
initial begin //照著寫就行,initial里面就是信號(hào)的波形
clk <= 0 ;//初始化時(shí)鐘
forever #10 clk <=~clk;//循環(huán),每隔10個(gè)單位時(shí)鐘反向一次,一單位時(shí)間在程序第一行
end
initial begin
rst_n <= 0 ;
#100 rst_n <= 1 ;//#100的意思就是經(jīng)過100個(gè)單位執(zhí)行下一條
end
project_2 tb( //例化,下面會(huì)解釋
clk ,
rst_n ,
out
);
endmodule
現(xiàn)在說一下例化,把主程序這塊復(fù)制下來,
粘貼到測(cè)試程序中,加'空格'和'例化名',我都是隨便寫例化名,一般就寫tb,例化可以把測(cè)試文件的三個(gè)端口和主程序的三個(gè)端口連接起來,還有一種更規(guī)范的寫法。在下一個(gè)圖
?
?這樣就完成了整個(gè)工程的程序書寫,ctrl+s保存
下面運(yùn)行一下試試
?
?點(diǎn)這個(gè)Run Simulation,然后點(diǎn)run這個(gè)就行了,生成的波形文件放大,拉到最前邊,可能因?yàn)槊總€(gè)上升沿執(zhí)行clk-rst_n,out是這樣,時(shí)鐘和復(fù)位信號(hào)相減(這里輸出我也不太明白)
?文章來源地址http://www.zghlxwxcb.cn/news/detail-754969.html
?下面是Verilog的一些語法
?文章來源:http://www.zghlxwxcb.cn/news/detail-754969.html
?
?
?
到了這里,關(guān)于從小白開始學(xué)FPGA,vivado實(shí)操第一次,初步產(chǎn)生波形的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!