freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

fpga現代數字系統(tǒng)設計(文件)

2025-01-26 14:20 上一頁面

下一頁面
 

【正文】 default:默認語句; endcase ? case括弧內的表達式稱為控制表達式 ,通常表示為控制信號的某些位。 ? 執(zhí)行完 case分項后的語句,則跳出該 case語句結構,終止 case語句執(zhí)行。 output[6:0] decodeout。d0:decodeout=739。b0110000。 439。d4:decodeout=739。b1011011。 439。d8:decodeout=739。b1111011。 output[3:0] out。 reg[3:0] address。b0000。 439。h3 : out = 439。b0000。 439。h7 : out = 439。b0000。 439。hb : out = 439。b0000。 439。hf : out = 439。 endcase end endmodule 例:查找表方式實現 2 2 乘法 casez語句: casez與 case語句語法結構的執(zhí)行過程完全一樣。 input a,b,c,d。b???1: out = a。b?1??: out = c。唯一不同的在于其狀況表示:當出現 Z及?或 X時,其狀況判定課當成不介意,亦出現 z或?或 z位時不做比較。 input[6:0] vote。 always (vote) begin sum=0。 else if(sum[2]) pass=1。 input[size:1] a,b。 always (a or b) begin oute=0。 end endmodule 【 例 】 用 for 語句實現 2 個 8 位數相乘 ? while語句 語句格式: while(條件表達式 )語句; ? 說明 :語句執(zhí)行過程先求解條件的值,如果值為真,執(zhí)行內嵌的執(zhí)行語句,否則結束循環(huán)。 while(i4) //while 語句 begin $display (i=%h,i)。 input clk。 initial begin data_out=0。 end $display(“the sum is %d,j= %d”data_out,j)。 initial begin clock=0。語法格式如下: wait(表達式 ) 程序區(qū)塊 例: module wait_examp() … . always … .. begin … .. wait (flag==1) counter=counter+1。 端口說明語句 變量類型說明語句 begin 語句 ........ end endfunction ? 注意 返回值的類型或范圍 這一項是可選項,如缺省則返回值為一位寄存器類型數據。 //把結果賦予函數的返回字節(jié) end endfunction ? 從函數返回的值 函數的定義蘊含聲明了與函數同名的、函數內部的寄存器。 ? 函數的使用規(guī)則 與任務相比較函數的使用有較多的約束,下面給出的是函數的使用規(guī)則: ? 函數的定義不能包含有任何的時間控制語句,即任何用#、 、或 wait來標識的語句。 【 例 】 函數 function[7:0] get0。 begin count=0。b0) count=count+1。 output[2:0] dout function[2:0] code。h7。 839。b0001_xxxx : code = 339。h3。 839。b0000_000x : code = 339。 endcase endfunction assign dout = code(din) 。 任務可以啟動其它的任務,其它任務又可以啟動別的任務,可以啟動的任務數是沒有限制的。 2) 任務的調用及變量的傳遞 啟動任務并傳遞輸入輸出變量的聲明語句的語法如 下: 任務名 (端口 1,端口 2, ...,端口 n)。 output[4:0] c。 //a,b,out 名稱的作用域范圍為 task 任務內部 output。 task my_and。 input[1:0] code。 1) 任務的定義 定義任務的語法如下: task 任務名 。任務完成以后控制就傳回啟動過程。 default: code = 339。h1。b0000_01xx : code = 339。 839。h5。b01xx_xxxx : code = 339。 //函數只有輸入,輸出為函數名本身 casex (din1) 839。 end endfunction 【 例 】 用函數和 case 語句描述的編碼器(不含優(yōu)先順序) module code_83(din,dout)。i=7。 reg[7:0] count。 ? 定義函數時至少要有一個輸入參量。函數的定義把函數返回值所賦值寄存器的名稱初始化為與函數同名的內部變量。 input [15:0] address。Verilog HDL模塊使用函數時是把它當作表達式中的操作符,這個操作的結果值就是這個函數的返回值。 end 4. repeat語句 語句格式: repeat(表達式 )語句; ? 說明: repeat語句執(zhí)行其表達式所確定的固定次數的循環(huán)操作,其表達式通常是常數,也可以是變量、信號。 ? forever不能寫在程序中,必須寫在 initial塊中 【 例 】 使用 forever語句產生一個周期為 10個時間單位的時鐘信號。end always(posedge clk) begin while(j=100) begin data_out=data_out+1。 reg [12:0]data_out。 end end endmodule 【 例 】 用 while語句求 1加到 100的值,完成后打印結果。 integer i。 i=size。 //結果 reg[2*size:1] oute。 end endmodule 【 例 】 用 for 語句描述的七人投票表決器 module mult_for (oute,a,b)。i=6。 integer i。VerilogHDL有四種循環(huán)語句: ? for ? foeever ? repeat ? while ? for語句 語句格式: for(表達式 1;表達式;表達式 3)語句; 說明: ? 表達式 1是初始條件表達式,表達式 2是循環(huán)終止條件,表達式 3是改變循環(huán)控制變量的賦值語句 ? 語句執(zhí)行過程 module voter7(pass,vote)。b1???: out = d。b??1?: out = b。 reg out。 具有優(yōu)先權的 4—1的選擇器 module mux_casez(out,a,b,c,d,select)。 default : out=39。b0110。hd : out = 439。 439。b0100。h9 : out = 439。 439。b0010。h5 : out = 439。 439。b0000。h1 : out = 439。 case(address) 439。 input clk。bx。 439。b1110000。d6:decodeout=739。 439。b1111001。d2:decodeout=739。 439。 reg[6:0] decodeout。 ? 針對表達式不確定值 X和高阻態(tài) Z的情況,提供逐為比較和執(zhí)行的操作語句如 casex和 casez。 例:用 case語句實現 4位數據的 4選 1電路。 else if (din= =2?b11) dout=4?b1000。 reg [3:0] dout。 input [1:0]din。 endmodule 例: 數據采樣模塊 例: 41的選通數據輸出,其輸出數據位 32位,(使用 ifelse語句) ? ifelse表達了一個條件選擇的設計意圖,它與條件運算符有重要的區(qū)別:條件運算符可以出現在一個表達式中,而這個表達式可以使用在過程賦值中或者連續(xù)賦值中,可進行行為建模,也可進行門級建模 ? ifelse只能出現在 always、 initial塊語句,或者函數與任務中,一般只能在行為建模中使用。 reg [3:0] data。 //計數 end endmodule ? 38譯碼器電路 例: 38譯碼器 module sample_reg(clk, rst, din, dout)。 always (posedge clk) //clk 上升沿觸發(fā) begin if (!reset) out = 839。 output[7:0] out。 always (posedge clk) begin i f (reset) qout=0。 end endmodule 例:設計 14進制計數器(要求同步時鐘下同步復位) module counter(qout,reset,clk)。 input clk,reset。如果操作數是 0、z、 x,等價于邏輯假,反之為邏輯真。 else cou=cou+1。 else cou=cou+1。 input clk,rest。 end join ? 在塊語句中,語句由上而下順序執(zhí)行,當執(zhí)行最后一行指令時,仿真時間為 100個時間單位。 30 dout=2?b10。 格式: fork fork 塊名 執(zhí)行語句 1; 快內變量、參數定義; 執(zhí)行語句 2; 執(zhí)行語句 1; 執(zhí)行語句 3; 執(zhí)行語句 2; join join 例如: begin fork 10 dout=2?b00。 ? 一旦右邊的任何一個操作數變化,左邊表達式重新計算,再進行新的一次賦值。 assign {c,sum[3:0]}=a[3:0]+b[3:0]+c_in。 ? 不要在兩個或兩個以上 always塊里面對同一個變量進行賦值。不允許持續(xù)性賦 ? 當為時序邏輯建模,使用 “ 非阻塞賦值 ” 。 always(posedge clk) begin a=b+1。 input clk,b。 end endmodule “ 阻塞賦值 “ 可以看作一步進程: ? 當沒有其它可以打斷賦值的描述時,估計等式右邊的值并賦予左邊。 wire clk,b。 ?阻塞賦值 ?非阻塞賦值 ? 連續(xù)賦值語句中,任何一個操作數的變化都會重新計算賦值表達式,重新進行賦值。 說明: ? 式子左邊的 “ 賦值目標線網 ” 只能是線網型變量,不能是寄存器型變量。 ? assign賦值語句執(zhí)行將數值賦給線網,可以完成門將描述,也可以更高的抽象角度對線網電路進行描述,多用于組合邏輯電路的描述。 assign q_b=~q。 else counter=counter+1; //開始計數 always(counter) display(“the counter is =%d”,counter) end ? 同步 D觸發(fā)器的 always語句 module sy_d_ff(clk,d,
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1