免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

Verilog中wire與reg到底怎么用?從硬件本質(zhì)到工程實(shí)踐徹底講清

Verilog中wire與reg到底怎么用?從硬件本質(zhì)到工程實(shí)踐徹底講清 寫(xiě)了這么多年RTL帶過(guò)不少剛?cè)腴T(mén)的同學(xué)我發(fā)現(xiàn)關(guān)于 wire 和 reg 這個(gè)問(wèn)題的出現(xiàn)頻率高得有點(diǎn)離譜。幾乎每隔一陣子就有人在群里問(wèn)一遍“這個(gè)信號(hào)到底該定義成 reg 還是 wire”面試的時(shí)候十個(gè)人里也有七八個(gè)會(huì)在這上面被繞進(jìn)去。今天干脆把這件事徹底講透從硬件本質(zhì)、仿真模型、綜合行為到真實(shí)工程里的選擇習(xí)慣一次性掰開(kāi)揉碎。先給一句話(huà)結(jié)論wire 描述的是“物理連線(xiàn)”或“組合邏輯的連續(xù)驅(qū)動(dòng)”reg 描述的是“always 塊內(nèi)部的過(guò)程賦值目標(biāo)”兩者在仿真模型里的角色完全不同但綜合出來(lái)的硬件未必是你想的那樣。至于“什么時(shí)候用哪個(gè)”說(shuō)到底就一條最實(shí)用的判斷準(zhǔn)則你先想清楚要用 assign 連續(xù)賦值還是要用 always 過(guò)程賦值前者聲明成 wire后者聲明成 reg。1. 先搞懂本質(zhì)wire 是“線(xiàn)”reg 是“變量”很多初學(xué)者在學(xué) Verilog 的時(shí)候腦子里的第一反應(yīng)是“wire 就是導(dǎo)線(xiàn)reg 就是寄存器?!边@個(gè)說(shuō)法在八成的情況下能對(duì)付作業(yè)但一旦接觸到真實(shí)工程會(huì)翻車(chē)翻得很難看。原因在于這個(gè)說(shuō)法混淆了仿真層面的數(shù)據(jù)類(lèi)型和綜合后的硬件邏輯這兩件事不是一回事。1.1 從硬件視角看 wire它就是一根物理連線(xiàn)wire 這個(gè)詞的本意就是“導(dǎo)線(xiàn)”在語(yǔ)言標(biāo)準(zhǔn)里屬于net type網(wǎng)絡(luò)類(lèi)型。網(wǎng)絡(luò)類(lèi)型描述的是一個(gè)信號(hào)值由某個(gè)驅(qū)動(dòng)源持續(xù)驅(qū)動(dòng)的連接關(guān)系它本身不存儲(chǔ)任何狀態(tài)。你把一個(gè) wire 想成一塊電路板上的一截銅線(xiàn)就行了當(dāng)前時(shí)刻這根線(xiàn)上是什么電平完全取決于現(xiàn)在誰(shuí)在驅(qū)動(dòng)它。在 RTL 設(shè)計(jì)里wire 最典型的出現(xiàn)位置有幾個(gè)模塊與模塊之間的端口連接。assign 連續(xù)賦值的左側(cè)。頂層文件里把子模塊輸出接到另一個(gè)子模塊輸入的中間信號(hào)。你寫(xiě)assign led cnt[3];的時(shí)候左側(cè)的 led 就必須是 wire。這句話(huà)翻譯成硬件行為是把計(jì)數(shù)器第 3 位這根線(xiàn)的電平直接連到 led 引腳上。它不是某一時(shí)刻賦值一次而是每一時(shí)刻都被持續(xù)驅(qū)動(dòng)這也是連續(xù)賦值這四個(gè)字的含義。還有個(gè)容易忽略的小細(xì)節(jié)wire 這類(lèi)網(wǎng)絡(luò)類(lèi)型的默認(rèn)值是高阻態(tài) z。在仿真里如果一個(gè) wire 沒(méi)有被任何驅(qū)動(dòng)源驅(qū)動(dòng)它讀出來(lái)是 z 而不是 0。這個(gè)特性在某些總線(xiàn)模擬場(chǎng)景下很關(guān)鍵。1.2 從硬件視角看 reg它是一種“會(huì)記住”的存儲(chǔ)行為reg 在語(yǔ)言標(biāo)準(zhǔn)里屬于variable type變量類(lèi)型。它描述的是一個(gè)過(guò)程賦值procedural assignment的目標(biāo)也就是說(shuō)它的值是在 always、initial、task、function 這些過(guò)程塊內(nèi)部通過(guò)賦值語(yǔ)句在某一時(shí)刻被更新然后保持這個(gè)值直到下一次被更新。你寫(xiě)always (posedge clk) begin cnt cnt 1b1; end這里的 cnt 必須聲明成 reg。如果把電路行為翻譯成自然語(yǔ)言時(shí)鐘上升沿來(lái)的時(shí)候把 cnt 更新成新值其他時(shí)間它保持不動(dòng)。這種保持的行為天然適合用變量類(lèi)型去建模。所以從仿真模型上看reg 更像程序語(yǔ)言里的變量它是內(nèi)存里的一個(gè)值可以被賦值可以保持可以在被賦值之前讀取雖然這樣會(huì)讀到未知態(tài) x。1.3 最容易踩的坑reg 并不等于硬件寄存器這是整個(gè)問(wèn)題里最經(jīng)典的認(rèn)知偏差。很多人以為 reg 類(lèi)型綜合出來(lái)就一定是觸發(fā)器wire 綜合出來(lái)就一定是連線(xiàn)這個(gè)想法錯(cuò)得非常徹底。reg 只是一個(gè)仿真語(yǔ)義層面的變量類(lèi)型。一個(gè) reg 信號(hào)綜合出來(lái)到底變成什么硬件完全取決于你對(duì)它做了什么。always (posedge clk)塊里賦值的 reg綜合成 D 觸發(fā)器。always (*)塊里賦值的 reg如果賦值完整綜合成純組合邏輯。always (*)塊里賦值不完整綜合成鎖存器latch。在initial塊里使用的 reg只在仿真里存在綜合時(shí)往往被直接優(yōu)化掉。我用一個(gè)更直白的例子幫你建立感覺(jué)。下面這段代碼reg result; always (*) begin if (sel) result a b; else result a - b; endresult 聲明的是 reg但它綜合出來(lái)是純組合邏輯實(shí)現(xiàn)的是一個(gè)二選一的加減法器沒(méi)有時(shí)鐘、沒(méi)有觸發(fā)器。因?yàn)?always 塊是 level sensitive電平敏感的且在 if 和 else 兩個(gè)分支里都賦值了信號(hào)每個(gè)時(shí)刻都是被驅(qū)動(dòng)的所以不需要存儲(chǔ)。反過(guò)來(lái)看如果你寫(xiě)wire out; assign out din_reg;out 是 wire但它接的實(shí)際連過(guò)去的是寄存器輸出。綜合后硬件上out 可能就是某個(gè)觸發(fā)器輸出引腳連出來(lái)的一小段金屬線(xiàn)。所以別再背reg 就是寄存器這種簡(jiǎn)化口訣了。reg 描述的是賦值方式不是硬件結(jié)構(gòu)。2. 什么時(shí)候用 wire核心場(chǎng)景拆解講完本質(zhì)現(xiàn)在落實(shí)到具體工程里到底怎么選。一個(gè)信號(hào)聲明成 wire就意味著這個(gè)信號(hào)會(huì)出現(xiàn)在 assign 語(yǔ)句左側(cè)、模塊實(shí)例化的輸出端口、或者連續(xù)賦值產(chǎn)生的表達(dá)式中。2.1 結(jié)構(gòu)建模與端口連接wire 是模塊間通信的管線(xiàn)數(shù)字系統(tǒng)設(shè)計(jì)到一定規(guī)模幾乎逃不開(kāi)自頂向下、模塊化這套方法。當(dāng)你例化一個(gè)子模塊的時(shí)候子模塊的輸出端口在父模塊這一側(cè)連接它的一定是 wire。來(lái)看一個(gè)典型的例子// 子模塊并轉(zhuǎn)串發(fā)送器 module uart_tx( input wire clk, input wire rst_n, input wire tx_start, input wire [7:0] tx_data, output reg txd ); // ... endmodule // 頂層模塊例化 uart_tx module top( input wire clk, input wire rst_n, input wire send_en, input wire [7:0] data_in, output wire uart_txd ); wire tx_start_w; assign tx_start_w send_en; uart_tx u_uart_tx ( .clk (clk), .rst_n (rst_n), .tx_start (tx_start_w), .tx_data (data_in), .txd (uart_txd) ); endmodule父模塊聲明的連接線(xiàn) tx_start_w 和輸出端口 uart_txd 都是 wire。原因很簡(jiǎn)單這些信號(hào)是“別人驅(qū)動(dòng)的”當(dāng)前模塊只需要讀取它的值或者把它繼續(xù)連出去不需要在某個(gè)時(shí)刻捕獲并保持它。從硬件意義上說(shuō)它們就是一根根真實(shí)存在的連線(xiàn)。2.2 組合邏輯的數(shù)據(jù)流建模assign 連續(xù)賦值的黃金搭配assign 語(yǔ)句是 Verilog 里描述組合邏輯最基本的手段而任何 assign 語(yǔ)句的左側(cè)目標(biāo)信號(hào)都必須是 wire 類(lèi)型。這算是語(yǔ)法上的硬性規(guī)定。組合邏輯什么時(shí)候優(yōu)先用 assign而不是用 always我的習(xí)慣是當(dāng)邏輯可以用一條或幾條布爾表達(dá)式直接描述清楚時(shí)用 assign 更簡(jiǎn)潔、更不容易出錯(cuò)。比如wire flag_valid (byte_cnt 4d8) (state BUSY); wire [7:0] next_data (fifo_empty) ? 8h00 : fifo_dout;這兩個(gè)信號(hào)的硬件含義就是一堆與門(mén)、或門(mén)、比較器和多路選擇器的組合沒(méi)有任何“時(shí)序狀態(tài)”在里面。我在做滑動(dòng)窗口濾波或者累加求和這類(lèi)純粹的組合運(yùn)算時(shí)也偏好用 assign 把中間結(jié)果鋪開(kāi)。好處是一眼能看出數(shù)據(jù)的流向不用去翻 always 塊的端口列表仿真排錯(cuò)的時(shí)候非常直觀。2.3 多驅(qū)動(dòng)與總線(xiàn)場(chǎng)景wire 才能掛多個(gè)驅(qū)動(dòng)源wire 類(lèi)型還有個(gè) reg 不具備的特性它允許多個(gè)驅(qū)動(dòng)源共同驅(qū)動(dòng)雖然這在行為級(jí)建模時(shí)要非常小心。真實(shí)工程里典型的場(chǎng)景是三態(tài)門(mén)和雙向 IO。// 雙向數(shù)據(jù)線(xiàn)由讀寫(xiě)控制信號(hào)決定驅(qū)動(dòng)方向 inout wire sda; assign sda (wr_en) ? tx_data_reg : 1bz; assign sda (rd_en) ? 1bz : tx_data_reg;這種用高阻態(tài) z 釋放總線(xiàn)的寫(xiě)法本質(zhì)是在說(shuō)“我不驅(qū)動(dòng)這根線(xiàn)的時(shí)候把它讓給別人?!边@種能力只有網(wǎng)絡(luò)類(lèi)型wire具備。如果你把一個(gè) inout 引腳內(nèi)部信號(hào)聲明成 reg綜合工具會(huì)直接報(bào)錯(cuò)因?yàn)?reg 是有狀態(tài)保持的變量無(wú)法實(shí)現(xiàn)掛起釋放。需要再補(bǔ)一句多個(gè) assign 同時(shí)驅(qū)動(dòng)同一個(gè) wire 時(shí)如果兩個(gè)驅(qū)動(dòng)源同時(shí)有效并且電平相反仿真結(jié)果取決于驅(qū)動(dòng)強(qiáng)度硬件上則可能燒毀。所以設(shè)計(jì)內(nèi)最好避免邏輯上的多驅(qū)動(dòng)沖突總線(xiàn)場(chǎng)景請(qǐng)用三態(tài)控制或仲裁邏輯。2.4 一個(gè)小結(jié)看到這些信號(hào)就用 wire綜合多年工程經(jīng)驗(yàn)下面這些信號(hào)我基本上是閉眼聲明成 wire模塊端口里聲明的 input 信號(hào)input 天然只能是 wire。模塊例化時(shí)連接輸出的外部連線(xiàn)。assign 語(yǔ)句左側(cè)的組合邏輯目標(biāo)。三態(tài)總線(xiàn)、雙向 IO 的內(nèi)部信號(hào)。由子模塊輸出經(jīng)過(guò)簡(jiǎn)單邏輯立即作為另一個(gè)子模塊輸入的中間信號(hào)。判斷的底層邏輯是**如果一個(gè)信號(hào)不需要在 always 塊里被賦值那么它就是 wire。**反過(guò)來(lái)只要它出現(xiàn)在任何 always 塊左側(cè)就必須是 reg。3. 什么時(shí)候用 reg核心場(chǎng)景拆解3.1 always 塊中的過(guò)程賦值必須用 reg 的硬性規(guī)則Verilog 語(yǔ)法規(guī)定過(guò)程賦值語(yǔ)句在 always、initial、task、function 內(nèi)賦值的目標(biāo)變量必須聲明為變量類(lèi)型也就是 reg、integer 等。所以判斷一個(gè)信號(hào)該不該用 reg最快的方法是看它有沒(méi)有出現(xiàn)在 always 塊里。這里我多說(shuō)一點(diǎn)“為什么”。因?yàn)?reg 變量類(lèi)型的仿真語(yǔ)義是“存儲(chǔ)并保持”在某一個(gè)仿真時(shí)間點(diǎn)被賦值后直到下一次被賦值之前它的值都保持不變。而 always 塊天然就是事件觸發(fā)、執(zhí)行一次、然后等待下一個(gè)事件這種執(zhí)行模型兩者正好天然匹配。wire 則是持續(xù)驅(qū)動(dòng)的把它放進(jìn) always 里賦值語(yǔ)義上就矛盾了。3.2 時(shí)序邏輯的建模計(jì)數(shù)器、分頻器與狀態(tài)機(jī)時(shí)序邏輯是 reg 最重要的主戰(zhàn)場(chǎng)。凡是要在每個(gè)時(shí)鐘沿更新值的信號(hào)必須聲明為 reg。計(jì)數(shù)器是最直觀的例子reg [7:0] cnt; always (posedge clk or negedge rst_n) begin if (!rst_n) cnt 8d0; else if (cnt_en) cnt cnt 1b1; else cnt cnt; endcnt 是 reg。它在時(shí)鐘上升沿更新時(shí)鐘沒(méi)來(lái)的時(shí)候就保持舊值綜合后就是 8 個(gè) D 觸發(fā)器級(jí)聯(lián)成的計(jì)數(shù)器。類(lèi)似地做 UART 多字節(jié)收發(fā)、SPI 時(shí)序控制、出租車(chē)計(jì)價(jià)器的金額累加這些從熱詞看都是大家經(jīng)常練手的工程案例核心都繞不開(kāi)狀態(tài)機(jī)和計(jì)數(shù)器而這些狀態(tài)寄存器、計(jì)數(shù)值寄存器統(tǒng)統(tǒng)都是 reg??梢赃@么說(shuō)只要設(shè)計(jì)里有時(shí)鐘就一定有 reg。再提一句三段式狀態(tài)機(jī)。三段式寫(xiě)法里第一段是狀態(tài)轉(zhuǎn)移用 always 時(shí)序邏輯狀態(tài)寄存器 current_state 聲明成 reg次態(tài)判斷 next_state 可以在第二段組合邏輯里聲明成 reg第三段輸出邏輯用 assign 接 wire 或直接在 always 里輸出 reg 都可以。整體上只要邏輯在 always 塊內(nèi)就繞不開(kāi) reg。3.3 組合邏輯的 always 建模reg 處理組合邏輯的典型場(chǎng)景這是很多人的第二個(gè)知識(shí)盲區(qū)。我面試的時(shí)候特別喜歡問(wèn)一個(gè)問(wèn)題always (*) 塊里賦值的信號(hào)聲明成 reg綜合出來(lái)是什么答案經(jīng)常讓人意外純組合邏輯。當(dāng)一個(gè) always 塊是電平敏感(*) 或 (a or b)、而且所有分支都對(duì)目標(biāo)變量完成了賦值時(shí)綜合工具會(huì)把它優(yōu)化成組合邏輯。沒(méi)有任何存儲(chǔ)的必要的條件下reg 這個(gè)名字就只是個(gè)仿真變量名而已。舉個(gè)例子一個(gè)很常見(jiàn)的組合邏輯建模方式reg [7:0] alu_out; always (*) begin case (op_code) 2b00: alu_out a b; 2b01: alu_out a - b; 2b10: alu_out a b; default: alu_out a ^ b; endcase endalu_out 聲明成 reg但它綜合出來(lái)是一個(gè) 8 位多路選擇器加運(yùn)算組合邏輯沒(méi)有時(shí)鐘也沒(méi)有寄存器。這里用 always 而不用 assign 的原因是 if/else 和 case 分支邏輯寫(xiě)起來(lái)更靠近 C 語(yǔ)言思維多人協(xié)作時(shí)更好讀。不過(guò)我要提醒一句組合邏輯用 always 寫(xiě)最大的風(fēng)險(xiǎn)是分支覆蓋不完全導(dǎo)致推斷出鎖存器。這個(gè)坑后面專(zhuān)門(mén)講。3.4 又一個(gè)陷阱always 塊里別亂用 wire見(jiàn)過(guò)不少新手把模塊輸出端口明明聲明成 output reg然后在頂層連接時(shí)卻發(fā)現(xiàn)綜合報(bào)錯(cuò)。還有更常見(jiàn)的毛病// 錯(cuò)誤示范 reg [7:0] data_bus; wire foo; always (*) begin foo data_bus[0]; // 編譯報(bào)錯(cuò)foo 是 wire不能在過(guò)程賦值里賦值 end這個(gè)錯(cuò)誤信息大概是說(shuō) foo is not a reg or integer解決方式就是要么把 foo 改成 reg要么把賦值語(yǔ)句改成 assign。語(yǔ)法層面的原因在上面已經(jīng)說(shuō)過(guò)回歸到思維層面就是第一反應(yīng)要先分清**我是要寫(xiě) always 還是 assign。**定了語(yǔ)句形式數(shù)據(jù)類(lèi)型就跟著定了。4. 仿真與綜合wire 和 reg 在“兩個(gè)世界”的行為差異如果你只想寫(xiě)作業(yè)到第 3 節(jié)就夠了。但如果你想做真實(shí)的 FPGA 開(kāi)發(fā)、ASIC 設(shè)計(jì)或者準(zhǔn)備秋招面試這里才是真正拉開(kāi)差距的部分仿真模型的規(guī)則和綜合工具的行為在很多細(xì)節(jié)上并不一致。4.1 仿真模型wire 是事件驅(qū)動(dòng)的信號(hào)reg 是程序變量在仿真器內(nèi)部wire 和 reg 的數(shù)據(jù)更新機(jī)制是不同的。wire 的更新遵循 net 類(lèi)型的事件驅(qū)動(dòng)規(guī)則當(dāng)它的任何一個(gè)驅(qū)動(dòng)源assign 右側(cè)表達(dá)式、門(mén)原語(yǔ)輸出、模塊輸出端口發(fā)生變化時(shí)仿真器會(huì)重新計(jì)算 wire 的值事件傳遞到下一級(jí)。這種模型對(duì)應(yīng)的是硬件里電平信號(hào)的連續(xù)傳播。reg 的更新則像普通編程語(yǔ)言的變量賦值在 always 塊被觸發(fā)時(shí)執(zhí)行塊內(nèi)語(yǔ)句把計(jì)算結(jié)果賦給 reg。在非阻塞賦值時(shí)這種更新還要分成“計(jì)算 RHS”和“更新 LHS”兩個(gè)階段這也是仿真器能模擬出真實(shí)觸發(fā)器采樣行為的底層機(jī)制。理解這個(gè)差異對(duì)你寫(xiě) testbench 很有幫助。比如在 initial 塊里你是可以給 reg 賦值的reg clk_tb; initial begin clk_tb 0; forever #5 clk_tb ~clk_tb; end但你不能在 initial 里給 wire 賦值除非你把它聲明成 wire 并用 force / assign 之類(lèi)的方式來(lái)驅(qū)動(dòng)。很多人在 testbench 里把輸入信號(hào)聲明成 wire 然后直接賦值一編譯就報(bào)錯(cuò)核心原因就是沒(méi)分清楚這種仿真層面的差異。4.2 綜合映射硬件上兩者到底變成了什么綜合工具做的是把 RTL 語(yǔ)言描述的行為變成結(jié)構(gòu)。它關(guān)注的是你的賦值邏輯、分支結(jié)構(gòu)、時(shí)序約束而不是信號(hào)名字里帶的是 wire 還是 reg。所以綜合之后的 netlist 里基本上全是 wire——因?yàn)榫W(wǎng)表本身就是用連線(xiàn)連接各個(gè)單元的描述。原來(lái)的 reg 信號(hào)如果最后映射成觸發(fā)器網(wǎng)表里是一個(gè) DFF 單元的 Q 輸出如果映射成組合邏輯那就是一堆邏輯門(mén)的輸出如果被優(yōu)化掉那網(wǎng)表里甚至找不到這個(gè)名字??偨Y(jié)一張表幫你把 仿真語(yǔ)言類(lèi)型 和 綜合硬件結(jié)果 這兩套思維徹底分開(kāi)聲明類(lèi)型賦值方式綜合結(jié)果通常情況wireassign 連續(xù)賦值組合邏輯連線(xiàn)與門(mén)、或門(mén)、多路器等regalways 時(shí)序塊賦值D 觸發(fā)器、寄存器堆、計(jì)數(shù)器regalways 組合塊完整賦值純組合邏輯無(wú)存儲(chǔ)單元regalways 組合塊不完整賦值鎖存器latch需盡量避免reginitial 塊賦值不可綜合僅仿真使用這張表建議直接背下來(lái)。面試?yán)镆悄馨堰@個(gè)完整講清楚基本上就把一半的人甩在后面了。4.3 一道經(jīng)典面試題為什么同樣的 always有時(shí)是觸發(fā)器有時(shí)是鎖存器說(shuō)到鎖存器這是組合邏輯 always 建模最經(jīng)典的坑也是面試官最?lèi)?ài)用來(lái)篩選候選人的點(diǎn)。reg q; always (*) begin if (enable) q d; end這個(gè)代碼里q 聲明成 regalways 是電平敏感的。但問(wèn)題是當(dāng) enable 為 0 的時(shí)候q 沒(méi)有被賦值。從仿真語(yǔ)義說(shuō)reg 會(huì)保持原有值從硬件映射說(shuō)要在 enable 為 0 時(shí)把值記住就必須引入一個(gè)電平敏感的存儲(chǔ)單元——這就是鎖存器。很多數(shù)字設(shè)計(jì)規(guī)范尤其是 ASIC 風(fēng)格是強(qiáng)烈不建議在組合邏輯中不必要地產(chǎn)生鎖存器的因?yàn)殒i存器對(duì)時(shí)序收斂和 DFT可測(cè)性設(shè)計(jì)都不友好。正確做法是給齊所有分支reg q; always (*) begin if (enable) q d; else q 0; // 或者 q q; 但要明白區(qū)別 end加上 else 分支后q 在每個(gè)輸入組合下都有確定的賦值路徑綜合工具就能放心地把它變成多路選擇器了。同理case 語(yǔ)句里的 default 分支也是絕對(duì)不能少的。5. 實(shí)戰(zhàn)案例在一個(gè) UART 發(fā)送模塊里wire 和 reg 怎么各司其職前面講完理論現(xiàn)在用一個(gè)完整的工程實(shí)例串一遍。就拿大家非常熟悉的 UART 發(fā)送模塊來(lái)當(dāng)例子這種模塊在握手、協(xié)議解析、多字節(jié)收發(fā)項(xiàng)目里幾乎都會(huì)用到。5.1 模塊端口劃分輸入輸出到底用 wire 還是 reg寫(xiě)任何模塊第一步就是定義端口。這里有個(gè)實(shí)用經(jīng)驗(yàn)**input 端口一律是 wireoutput 端口默認(rèn)也是 wire只有當(dāng)你確定要在 always 塊里給它賦值時(shí)才把它額外聲明成 output reg。**在 Verilog-2001 時(shí)端口類(lèi)型和數(shù)據(jù)類(lèi)型是可以寫(xiě)在一行的。module uart_tx ( input wire clk, // 系統(tǒng)時(shí)鐘 input wire rst_n, // 低電平復(fù)位 input wire tx_start, // 發(fā)送使能 input wire [7:0] tx_data, // 待發(fā)送數(shù)據(jù) output reg txd, // 串行輸出需要在 always 中賦值 output wire tx_busy // 忙標(biāo)志用 assign 給出 );txd 是串行輸出信號(hào)根據(jù)發(fā)送狀態(tài)機(jī)在每個(gè)時(shí)鐘沿移位更新所以必須是 output reg。tx_busy 是忙標(biāo)志它只是把內(nèi)部一個(gè)狀態(tài)寄存器的值或組合邏輯結(jié)果簡(jiǎn)單輸出用 assign 就能搞定因此是 output wire。其實(shí)這里也可以讓 tx_busy 直接等于內(nèi)部狀態(tài)assign tx_busy (state ! IDLE);這句話(huà)的含義是只要當(dāng)前不在 IDLE 狀態(tài)就對(duì)外拉高忙信號(hào)。它是典型的數(shù)據(jù)流組合邏輯用 wire 非常合適。5.2 內(nèi)部信號(hào)規(guī)劃哪些該 wire、哪些該 reg進(jìn)入模塊內(nèi)部規(guī)劃起來(lái)就更有章法了。我的做法是先畫(huà)信號(hào)列表分成“狀態(tài)類(lèi)信號(hào)”和“連接類(lèi)信號(hào)”兩大陣營(yíng)狀態(tài)類(lèi)信號(hào)必須用 reg因?yàn)樗鼈冃枰跁r(shí)鐘沿被一次次更新state當(dāng)前發(fā)送狀態(tài)三段式狀態(tài)機(jī)的第一段必用非阻塞賦值。clk_div_cnt波特率分頻計(jì)數(shù)器。bit_cnt當(dāng)前發(fā)送的第幾個(gè) bit。txd_reg實(shí)際串行發(fā)送的移位寄存器。連接類(lèi)信號(hào)用 wire它們是組合邏輯的中間產(chǎn)物tx_start_pulsetx_start 的上升沿脈沖。tick波特率時(shí)鐘脈沖。byte_done一字節(jié)發(fā)送完成的標(biāo)志。舉個(gè)例子波特率時(shí)鐘脈沖 tick 是這樣產(chǎn)生的wire tick (clk_div_cnt DIV_CNT_MAX);tick 是指定分頻計(jì)數(shù)達(dá)到最大值時(shí)的譯碼結(jié)果每一時(shí)刻都被連續(xù)驅(qū)動(dòng)決定當(dāng)然是 wire。接著狀態(tài)機(jī)可以用 tick 來(lái)驅(qū)動(dòng)數(shù)據(jù)移位這就在多個(gè) always 塊之間建立了清晰的信號(hào)通路。5.3 用 wire 把子模塊拼起來(lái)FIFO 與狀態(tài)機(jī)的連接如果這個(gè) UART 發(fā)送模塊再往上做成一個(gè)多字節(jié)收發(fā)系統(tǒng)往往前面還要接一個(gè)發(fā)送 FIFO。FIFO 的讀數(shù)據(jù)端口、空標(biāo)志、讀請(qǐng)求信號(hào)在頂層就是用 wire 互連的。wire [7:0] fifo_dout; wire fifo_empty; wire fifo_rd_en; uart_fifo u_fifo ( .clk (clk), .rst_n (rst_n), .wr_en (byte_recv_done), .din (rx_byte), .rd_en (fifo_rd_en), .dout (fifo_dout), .empty (fifo_empty) ); uart_tx u_uart_tx ( .clk (clk), .rst_n (rst_n), .tx_start (~fifo_empty), .tx_data (fifo_dout), .txd (txd) );這里幾乎全是 wire。原因很直接在頂層這個(gè)抽象層次你看到的不是“某段邏輯的賦值行為”而是“各個(gè)黑盒模塊之間的信號(hào)連線(xiàn)”。頂層的職責(zé)是連好線(xiàn)而不是描述內(nèi)部邏輯所以 wire 就是頂層的主旋律。5.4 綜合后的實(shí)際硬件結(jié)果把上述模塊做完綜合你大概率會(huì)看到txd 對(duì)應(yīng)的區(qū)域推斷出一組 D 觸發(fā)器移位寄存器和狀態(tài)寄存器。tx_busy、tick、byte_done 這些 wire 在網(wǎng)表里對(duì)應(yīng)的是組合邏輯門(mén)比較器、與門(mén)。FIFO 內(nèi)部的 RAM 和讀寫(xiě)地址計(jì)數(shù)器分別映射成存儲(chǔ)陣列和寄存器堆。硬件不會(huì)管你代碼里寫(xiě)的是 wire 還是 reg它只關(guān)心“你有沒(méi)有在時(shí)鐘沿保存狀態(tài)”和“你的組合邏輯是否完備”。所以我的建議很明確**寫(xiě)代碼的時(shí)候把心思放在賦值場(chǎng)景上而不是數(shù)據(jù)類(lèi)型上。**assign 就用 wirealways 就用 reg這樣寫(xiě)出來(lái)的 RTL綜合工具最省心后端也不會(huì)半夜給你打電話(huà)。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄最后分享一些我在實(shí)際工程中反復(fù)遇到過(guò)的報(bào)錯(cuò)和排查經(jīng)驗(yàn)。這些問(wèn)題基本是初學(xué)者的高頻雷區(qū)一個(gè)個(gè)過(guò)一遍。6.1 典型報(bào)錯(cuò)reg 被連續(xù)賦值了錯(cuò)誤信息類(lèi)似Error (10170): Verilog HDL syntax error ... object xx is not a wire或者更常見(jiàn)的是reg cannot be driven by continuous assignment這個(gè)場(chǎng)景一般是你聲明的信號(hào)是 reg但又不小心寫(xiě)了assign xx ...。修復(fù)方案很簡(jiǎn)單把自己?jiǎn)栆槐檫@個(gè)信號(hào)是組合邏輯的多路選擇結(jié)果還是時(shí)序狀態(tài)如果是前者看看能不能用 wire 表達(dá)如果實(shí)在要用 always 寫(xiě)就把賦值語(yǔ)句刪掉、搬到 always 塊里。6.2 典型報(bào)錯(cuò)wire 被過(guò)程賦值了錯(cuò)誤信息類(lèi)似Error (10028): Cant resolve xx to a reg or integer這個(gè)場(chǎng)景最常見(jiàn)的發(fā)生在寫(xiě) testbench 時(shí)wire clk_tb; initial clk_tb 0; // 報(bào)錯(cuò)因?yàn)?clk_tb 是 wire不能在 initial 里被賦值。改成 reg clk_tb; 就對(duì)了?;蛘吣阏娴南胗?wire就得用 assign 或 force 來(lái)驅(qū)動(dòng)。測(cè)試激勵(lì)這塊的解決思路是激勵(lì)信號(hào)用 reg因?yàn)樗窃谀硞€(gè)時(shí)間點(diǎn)改變的變量被測(cè)模塊輸出的檢測(cè)信號(hào)用 wire因?yàn)槟阒恍枰O(jiān)控它的變化。6.3 組合邏輯的鎖存器警告怎么處理綜合工具Quartus、Vivado、Design Compiler一般都會(huì)報(bào) latch 警告比如 Vivado 里是[Synth 8-327] inferring latch for variable xx處理思路按優(yōu)先級(jí)排序檢查是否每個(gè)分支都給目標(biāo)變量賦值了。if 要有 elsecase 要有 default。檢查變量是不是在多個(gè) always 塊里被賦值。同一個(gè) reg 不能被兩個(gè) always 驅(qū)動(dòng)這是語(yǔ)法錯(cuò)誤。檢查是不是把組合邏輯塊誤寫(xiě)成了電平敏感且分支不全的結(jié)構(gòu)。如果確實(shí)需要鎖存器比如總線(xiàn)保持之類(lèi)也要寫(xiě)成顯式的 latch 風(fēng)格并在注釋里說(shuō)明理由別讓工具“偷偷”推斷。再補(bǔ)充個(gè)我自己常用的檢查技巧寫(xiě)組合邏輯 always 時(shí)上電仿真把所有使能信號(hào)分別跑一遍 0 和 1觀察輸出是否有異常保持。如果某個(gè)輸入組合下輸出一直不變化十有八九就是分支缺了。6.4 wire 和 reg 實(shí)戰(zhàn)避坑清單這幾條是我自己在多輪項(xiàng)目里總結(jié)出來(lái)的“肌肉記憶”每一條背后都有真實(shí)踩坑經(jīng)歷分享給大家頂層連接信號(hào)全部用 wire。頂層不是寫(xiě)邏輯的地方它是畫(huà)圖紙的地方。讓子模塊自己處理 reg 的內(nèi)部邏輯頂層只負(fù)責(zé)把線(xiàn)連對(duì)。output 默認(rèn)為 wire要往 always 里塞才聲明成 output reg。反過(guò)來(lái)input 永遠(yuǎn)不可能聲明成 reg否則編譯直接罷工。testbench 里給 DUT 輸入的激勵(lì)信號(hào)用 reg檢測(cè) DUT 輸出的信號(hào)用 wire。這個(gè)規(guī)則百試不爽。不要出現(xiàn) “assign always 同時(shí)驅(qū)動(dòng)一個(gè)信號(hào)” 的代碼。無(wú)論是仿真還是綜合多驅(qū)動(dòng)都是災(zāi)難。組合邏輯 always 里一定要寫(xiě) else 和 default。哪怕你覺(jué)得條件全覆蓋了也要寫(xiě)。一方面防工具推斷 latch另一方面也是給別人讀代碼時(shí)留個(gè)明確的邏輯閉環(huán)。如果發(fā)現(xiàn)仿真波形里某個(gè) reg 輸出是 x優(yōu)先查復(fù)位邏輯和初始化賦值。reg 在仿真里默認(rèn)值是 x這跟 wire 的 z 不一樣很多新手第一次跑仿真看到滿(mǎn)屏 x 會(huì)慌其實(shí)這只是仿真模型的初始值。不要把 reg 和寄存器劃等號(hào)。我在帶人評(píng)審代碼的時(shí)候最怕聽(tīng)到有人介紹說(shuō)“這個(gè)信號(hào)是 reg所以它是寄存器”。正確說(shuō)法應(yīng)該是“這個(gè)信號(hào)在 always 時(shí)序塊里賦值所以綜合后是寄存器”。再補(bǔ)一句關(guān)于綜合和仿真不一致的問(wèn)題。有些新手會(huì)問(wèn)為什么我仿真的時(shí)候 reg 輸出能保持下載到板子上就不對(duì)了這通常不是 reg 本身的問(wèn)題而是代碼里復(fù)用組合邏輯 / 時(shí)序邏輯時(shí)不小心把應(yīng)該搭的時(shí)序關(guān)系寫(xiě)錯(cuò)了或者復(fù)位方式、時(shí)鐘域跨域出了問(wèn)題。建議排查的時(shí)候先用在線(xiàn)邏輯分析儀抓內(nèi)部寄存器的信號(hào)看狀態(tài)機(jī)是否按要求走再看對(duì)應(yīng) wire 的組合邏輯輸出是否符合預(yù)期。把兩者分開(kāi)看問(wèn)題就縮小一半了。聊到這里關(guān)于 wire 和 reg 的內(nèi)容基本就完整了。說(shuō)句心里話(huà)這個(gè)知識(shí)點(diǎn)本身并不難難的是很多人一開(kāi)始就陷入“wire 就是線(xiàn)、reg 就是寄存器”這種簡(jiǎn)化模型里后面越學(xué)越別扭。我個(gè)人的建議是**每次寫(xiě)代碼前先默念一遍assign 對(duì)應(yīng) wirealways 對(duì)應(yīng) reg然后放手去寫(xiě)。**寫(xiě)多了形成肌肉記憶你自然就理解為什么這種語(yǔ)法規(guī)則是合理的了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
六月婷婷五月丁香| 丁香六月婷婷| 色狠狠色噜噜AV天堂五区| 丁香五婷婷| www.色婷婷| 日韩伊人大香蕉| 丁香六月婷婷激情| 99久在线观看| 国产美女无遮挡裸体毛片A片| 五月天欧美 另类小说| 思思热在线视频精品| 99精品在线| 北条麻妃伊人 | 色五月婷婷久久| 噜噜干日本| 五月婷婷在线视频免费观看| 色色草97| 婷婷五月综合激情| 人人干女人| 五月丁香久久综合| 亚洲精品第一国产综合亚AV | 青青操丝袜美腿| 五月婷激情影院| 婷色五月| 97精品综合| 99丁香五月婷婷在线| 不卡的AV网站| 夜夜谢天天干| 狠狠干,狠狠操| 欧美五月丁香在线| 成人欧美日韩| 99自拍视频| 99热丁香| 九九五月天| 91综合在线观看首页| 天天干天干| 热的无码综合视频| 激情婷婷五月亚洲| 亚洲99激情| 精品九九久久| 欧美A级成人婬片免费看理论| 色爱综合网| 婷婷欧美激情| 丁香五月婷婷色综合基地| 碰人人97| 91激情五月开心| 九九视频在线观看视频6| 五月婷婷六月天| 天天爱天天做天天舔| 亚洲精品视频电影| 日日夜夜狠狠婷婷色| 久99热| 午夜九九九九九九九九九九九九九| 日韩成人无码| 99热这里| 丰满少妇猛烈A片免费看观看| 九九AV| 五月丁香婷婷激情澎湃四射| xfplayav在线| 99re这里只有精品在线观看| 久久伊人日日夜夜| 678五月丁香亚洲综合| 久久久久妻| 日本高清久| 男同色五月开心五月激情五月| 色九月| 激情综合五月激情17| 婷婷综合网站| 日韩色色小视频| WWW久| 激情5月婷婷| 99热这里只有精品5| 综合激情五月天| 婷婷五月AV| 综合成人小说婷婷| 成人av中文字幕| 婷婷五月天网| 婷婷丁香五月天影院| 自拍偷窥99热| 99热这里有精品6| 六月丁香婷婷开心综合基地| 婷婷色五月色| 婷婷综合网站| 免费色婷婷| 婷婷性爱视频在线| 五月激情视频网| 中国AV性爱观看| 天天成人综合视频| 99这里| 不卡在线超碰| 人妻人人操| 大香蕉五月天婷婷| 1024AV视频| 丁香六月婷婷久久高清| 色操b| 日本三久久| 欧美丁香五月| 五月天婷婷在线视频| 全部老头和老太XXXXX| 丁香婷婷久久综合在线| 五月丁香成人| 思思热视频在线观看| 九九性视频| 久久婷婷色色| 99超碰人人| 思思热思在线精品视频| 97人人草| www.99操| 99热99免费| 免费观看欧美成人AA片爱我多深 | 激情色情五月天| 思思热久久爱| 婷婷五月在线影院| 伊人六月丁香婷婷| 天天影院色| 婷婷五月天社区| 三男玩一女三A片| 韩日AV片| 欧美激情五月天在线观看| 丁香五月天天日| 婷婷综合一二三| 六月丁香五月天| 久青草大香蕉| 狠狠婷婷爱| 99热在线看片| 婷婷丁香五月91| 翔田千里无码| 午夜不卡久久精品无码免费| 日韩中文欧美| 99综合视频一体| 亚洲婷婷五月| 五月丁香啪啪综合网| 五月激情天| 九九在线热九九在线热99热| tingtingzonghewang| 久久久精品色| 狠狠香婷婷五月| 婷婷五月天激情综合网| 99九九这里有免费视频| 国产99美少妇| 亚洲亚洲人成综合网络| 人妻在线中文字幕久久| 国内自拍1区| 啪啪干伊人婷婷| 超碰99在线| 色色自拍视频网站| 久久色六月| 五月丁香综合久久| 超碰色热| 日韩精品一区二区亚洲AV观看| 人妻六月天| 色色AV色色色东莞| 激情五月天色色色| 婷婷九月亚洲| 婷婷五月天另类视频| 天天日天天爽夜夜爽| 99热老司机| 婷婷九月| 极品人妻videosss人妻| 天天色综| 96丁香六月婷婷蜜桃综合久久| 九九激情网| 日韩九区| 常久最新免费的色吊丝| 日本成人内射| 色噜噜狠狠色综合网| 人人妻人人澡| 久久98| 亚洲无码激情| 99热这里是精品| 激情文学 综合 色| 国产成人精品一区二三区熟女在线 | 天天操比比| 婷婷丁香18| 综合激情网| 三级片AAA久久久AAA久久久AAA| 久久婷婷操| 天天爽夜夜操| 淑女丝袜bi操逼123| 亚洲激情五月| 色五月av| 91久久精品无码一区二区三区| 在线网黄| 亚洲黄网在线| 五月丁香啪啪网| 这里只有精品视频看看| 五月婷婷六月天| 丁香五月社区| 激情爱爱网站| 性色99| 大香蕉久艹| 99热综合| 六月丁香婷婷综合狠狠爱夜夜爱| 午夜精品777| 色婷婷色| 五月精品99综合| 久久激情五月婷婷| 开心婷婷五月天综合| 欧美色色色色色| 婷婷大乡焦噜噜| 激情五月综合网| 丁香五月六月婷婷怡红院| 琪琪色热色色| 久久婷婷五月综合网| 久久婷婷网站| 成人五月天视频| 婷婷丁香视频在线观看免费| 婷婷五月电影| 懂色av粉嫩av蜜臀av| 亚洲第一综合| 色操b| 99操视频| 天天操婷婷| 五月婷婷色欲| 任你草| 久热精品视频| 欧美va精品va老师va| 青青久久91| 国产在这里只有精品| 夜夜天天久久婷婷| 五月天国产成人| 久婷婷五月天影院| 97五月天婷婷综合激情网| 在线中文字幕av| 色婷婷狠狠久久综合五月| 中文字幕不卡+婷婷五月| 婷婷桃色网| 亭亭玉月丁香| 五月婷婷激情| 五月综合无码| 综合色播| 天天爽人人综合免费7799| 五月丁香婷婷爱| 亚洲五月天婷婷综合| 丁香五月天激情五月天激情五月天激情网| 日本wwww在线| 月色色综合婷婷网| 九九综合网色全集| 性色婷婷| 久激情网| 99久热在线精品| 久久精品综合色| 九九九九成人| 日韩在线视频网站| 狠狠操综合| 狠狠干夜夜干| 丁香六月欧美| 日韩高清成人| 天天摸天天舔天天天天爽| 三十路磁力链接| 婷婷色五月天第7色| 丁香五月网站| 欧爱综合视频| 五月婷婷基地| 六月婷婷激情| 婷婷激情五月综合| 乱岳熟女50岁| 九九色网专区| 欧美WW在线网| 国产精品久久久久久白浆色欲| 色综合天堂| 色色五月天网站| 欧美视频五区| 五月丁香六月婷婷,婷| 大香蕉久| 热久久思思热思思| 五月天精品综合| 看久久性爱视频| 色另类五月天| 亚洲丁香五月| 色婷婷9| 五月丁香激情综合网| 五月丁香六月婷综合成人综合| 婷婷五月天在线观看免费| 久草婷| 色婷婷性爱| 综合激情肏逼网| 五月丁香激情四射综合| 国产 亚洲 在线| 婷婷在线观看五月天在线视频| 久久这里面只有精品视频| 99热精品一区| 黄网免费观看| 琪琪色网在线| 人妻综合网| 天天爽天天日人人爱| 色婷婷色99国产综合精品| 色噜噜狠狠色综合AV兰草影视| 色婷婷国色天香综合| 巴基斯坦粉嫩无码视频| 99热精品无码| 99re青青草| 国产亚洲在线| 色色色色av色色色色| 人人人操97| 天天综合网91| 丁香五月婷婷啪啪视频| 亚洲成片在线观看| 性 色 婷婷| 五月婷婷丁香瑟瑟视频| 色婷婷久久| 男人大jjc女人免费视频| 午夜免费高清AV片| 激情五月天之六月婷婷| 五月天婷婷久久| 色亭亭影园| 亚洲无码yw| 欧美日韩大黄| 欧洲亚洲免费视频9| 五月婷婷丁香| 九九综合色| 五月天婷婷在线播放免费| 91九色|疯狂|高潮|对白|| 91操碰| 99热 在线观看| 91AV婷婷| 色综合激情| 欧洲高清免费久久| 天天色天天| 日韩成人电影Av| 激情五月天婷婷久久久久久久久久久| www.久久爱.com| 伊人婷婷大香蕉在线| 婷婷伊人久久| 99ri精品在线| 免费观看2018www黄色操逼网站| 成人免费视频一区| 色色色国产| 五月丁香综合啪啪| 色优久久| 色婷婷色99国产综合精品| chaopeng在线人人| 婷婷五月天首页| 97五月天| 97丁香五月| 色五月天激情| 97干干干丁香| 99色色最新视频| 91婷婷| 色色五月天婷婷| 亚洲婷婷五月天| av操B网站| 婷婷六月激情啪啪| 亚洲精品V天堂中文字幕| 五月婷婷六月丁香免费| 天天干,夜夜爽| 五月丁香婷婷色色色| 五月六月伦理| 丁香五月成人自拍| 9月色婷婷| 色噜久| 激情5月婷婷| 婷婷视频在线| 久热视频这里只有精品| 日韩啪图| 久久五月天视频| 综合久久高清| 日韩AAAAA| 日本综合久| 天天狠狠夜夜狠狠2023| 性爱在线播放av| 夜夜爽天天干| 激情丁香淫荡婷婷| 丁香婷婷综合影院| 91九色无码日韩| 老妇操B| 午夜不卡成人一区二区| 97色精品视频 | 四色五月婷婷| 丁香五月天激情综合| 九色激情网| 日日干日日| 五月天婷婷基地综合网| 日本色五月| 操操操www.com| 国产亚洲成AV人片在线观黄桃| 超碰在线超碰| 九九在线精品| 亚洲久热无码| 激情婷婷丁香五月天| 91精品久久久久久77777| 国产99热| 中文字幕人妻一区二区| 五月丁香综合激情网| 久久xxxx| av在线免费播放观看| 色五月中文网| 99成人网站| 丁香五月天堂婷婷| 婷婷五月丁香综合激情| 99久久a线观| 精品热九九| 久久久久人妻| 久久丁香五月婷婷激情综合网| 国产婷婷婷| 99久久五月婷婷| 色5月婷婷| 亚洲爆乳无码精品AAA片蜜桃| 可似看的AV| 久久婷婷五月天蜜桃| 综合激情视频| 日日操夜夜撸| 色五月婷婷激情五月| 久久婷婷资源| 亚洲成人无码专区| 婷婷大香蕉| 五月天婷婷青青草| 天天色·欧美| 9精品视频在线观看| www.超碰| 九九精品99| 精品久久久久久久久久久久人妻| 99超级碰免费视频| 久久久久久久久久久97| 丁香激情综合| 丁香五月综合| 五月天丁香综合| 婷婷丁香五月激情中文字幕版| 青青日韩| 婷婷草| 国产操碰| 99亚洲精美视频在线观看| 亚洲操操操| 天天干天天拍| 怡红院视频| jiujiu无码五区| 超碰在线超碰| 色婷婷AⅤ| 九九综合影音先锋| 蜜臀AV在线观看| 成人五月天丁香| 久久久久久久久久人妻| 深爱五月亚洲| 狠狠草婷婷| 欧美婷婷六月丁香综合色| 狠狠干在线| 欧美黑人巨大性生话| 色五月琪琪| 日本色视| 婷婷丁香小说| 精品五月天| 开心五月激情五月丁香五月婷婷| 蜜臀av无码久久久久久久久| 婷婷五月天视| 亚洲五月天综合色| 秋霞午夜理论| 五月丁香六月激情网| 五月开心婷婷中文字幕| 九九视频网| 色情久久久| 伊人色综合久久久| www,色婷婷| 九九99在线| 丁香九色不卡aaa | 午夜福利8055| 99热一本久道| 久久视频婷婷| 亚洲人妻av| 99在线69| 激情综合五月激情XXXX| 五月天婷婷青青| 婷婷色五月亚洲| 欧美激情 日韩无码 婷婷 五月天| 久久性爱视频网站| 99色在线| 国产jd1024基地手机看国产| 九九色video| 激情综合丁香| 五月天色色色色色| 丁香狠狠色婷婷| 激情五月天综合网| 激情五月天噢美| 七七九九色色| 色五月综合婷婷| 深爱激情六月天| 丁香五月天中文字幕| 99热综合网| www.99热视频| 亚洲乱码日产精品BD在线观看| 麻豆AV一区二区三区| 国产精品99久久久久久久女警| 国产做爰视频免费播放| 天天操天天国产三级片处女学生妹| 婷婷五月天涩涩| 大香久久伊人网| 久久亚洲天堂| 欧美丁香婷婷天天操| 午夜 外网 精品 在线| 色五月天在线| 婷婷五月天网址| 99热亚洲精品| 九色成人AV在线| 夜夜爱爱亚洲| 五月天无码| 久色中文| 91超级碰在线视频| 亚洲无AV在线中文字幕| 色色综合热| 激情综合无码| 色欲色香,www,com| 亚洲精品视频在线| 婷婷中文字暮| 激情综合网五月激情| 久久婷婷五月天激情新地址| 久久超视频| 99婷婷五月天| 丁香六月欧美| 99精品国产在热久久| 91热久| 九久9精品| 九九久久五月天综合伊人| 99精品无码| 99热精品在线观看| 丁香六月青青草| 婷婷爱在线观看| 夜夜爽天天日| 色人久久| 色老久久| 深爱婷婷丁香五月激情| 99久久久| 狠狠丁香| 激情六月综合| 成人做爰高潮A片免费视频| 日韩有码久久| 欧美噜一噜| 婷婷五月丁香综合| 色色九区| 热99只有里视频| 在线观看中文字幕| 91打屁股视频网站| 噜噜噜噜噜色| 中文字幕无码AV| 色九网| 色婷婷成人| 国产欧美日韩综合精品一区二区| 色婷婷久久综合| 午夜做爱影院| 亚洲噜色| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 超碰三级片| 99热国产在线| 婷婷五月精品在线| 色婷婷电影网| 亚洲综合在线伊人婷| 天天日夜夜曹| 色网站9| 天天 日综合| 69精品人人人人| 婷婷久久免费| 六月婷婷视频| 色七七九九| 婷婷俺去也| 天天婬色综合| 五月丁香六月婷婷在线观看| 日韩不卡123| 亚州日本欧州韩美高青高潮一| 思思久久精品| 天天插天天插天天操| 伊人网碰碰| www一起操| 婷婷六月综合激情| 影音先锋偷偷色男人站| 丁香婷婷激情| 色噜噜狠狠色综合网| 天天爱天天吃狠天天透| 婷婷五月精品中文字幕| 棕合影院色色| 99热在线中文字幕| 国产无套精品一区二区| 色婷婷丁香网| 99欧美| 五月香蕉婷婷| 亚洲狠9| 99热日韩| 十区AV| 五月婷婷婷丁香播| 丁香五月婷婷啪啪啪| 9久久久久久久久久久| 激情五月天啪啪| 婷婷五月天AV在线| 99热18| 五月丁香激情综合网| 激情五月激情综合俺也去婷婷小说| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 成人短视频在线| 亚洲1区| 六月丁香花婷婷| 久久久婷婷婷| 五月婷婷欲色| 国产超碰人人| 99热官网| 精品无码99| 大香蕉九九操| 丁香六月啪| 五月丁激情| tingtingseav| av狠狠操| 丁香综合网| 婷婷99丁香| 婷婷激情六月| 婷婷丁香五月综合激情视频| www99久久| 婷婷五月天小说| 五月丁香激情深爱婷婷| 色情久久久| 国产肥白大熟妇BBBB视频| 这里只有精品视频一区| 伊人婷婷大香蕉| 俺去也五月| 五月激情站| 久久亚洲A| Www.Av网9| 99亚洲天堂| 亚洲综合色丁香五月天| 影视av久久久噜噜噜噜噜三级| 日韩成人电影AV| 五月天久久综合婷婷丁香| 婷婷五月天Av| 97成人操| 丁香五月五月婷婷| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | www.91av.com| 综合五月婷婷| 久 久9 9 热 视 频| 五月丁香色色网| 久超免费视频| 99精品国产在热久久| 婷婷九月丁香| 亚洲另类久久| 六月婷婷六月天天在线免费| 日韩综合久| 国产毛片精品一区二区色欲黄A片| 五月婷婷丁香六月| 另类综合国产| 五月婷六月综合在线观看| 黄页免费一级视频懂色| 婷婷五月激情四射手| 9l视频自拍9l九色9l成人| 亚洲国产精品VA在线看黑人 | 亚洲第一综合| 久久精品9| 99热久久这里只有精品2010| 久久五月天合网| 日本啪啪网| 国产精品A片在线| 久久久久久久人妻| 六月色色| 五月丁香六月婷| 性爱综合网| 97国产精品女人碰碰| 国产肥白大熟妇BBBB视频| 97碰免费视频在线| www.五月天婷婷| 996日日爱| 综合五月天天天天天五月| 丁香六月婷婷综情欧美| 久久久中文| 思思99久久| 91jiuseshunv| 丁香五月激情啪啪啪| 丁香婷婷九月在线| 内射干少妇亚洲69XXX| 综合激情婷婷| 99精品无码| 久久激情五月| 91狠狠综合久久| 婷婷激情六月| 婷婷五月色| 五月丁香婷婷综合网| 久久多色| 五月色亚洲| 久久性爱视频网站| 丁香六月情| 久草五月| 操91| 丁香五月综合亚洲| 激情五月婷婷综合色播小说| 婷婷五月色网| se99视频| 激情啪啪五月| 狠狠做婷婷| 婷婷丁香人妻天天爽| 中文字幕 中文字幕明步| 天天射影院| 禁欲电影完整版在线播放| 中文字幕无码人妻少妇免费视频 | 26UUU| 操操操av| 天天射夜夜骑| 色无码| 大香蕉五月丁香| 丁香婷婷影院| 4399无码视频| 色色丁香五月天社区| 大伊香蕉玖玖爱| 另类专区在线| 天天上天天爽| 美国色五月天婷婷资源站| 九九色色| 成人午夜无码视频| 欧美人人草草| 久久精品9| 丁香婷婷五月天色综合| 五月天 另类图片| 五月丁香婷草| 男妓跪趴把舌头伸进我的嘴巴| 婷婷五月丁香青青草在线| 色五月色情| 99熟女视频| 99在线视频在线观看| 99国产在线| 婷婷五月天开心网| 亚洲精品九九| 国产xxxxx在线观看| 五月天婷婷激情春色小说| www,超碰| 久久国产一区二区三区| 婷婷色色欧美| 丁香激情合作五月| 123草逼网| 第九色区av天堂| 婷婷丁香91| 久久色五月| 精品人妻伦一二三区久| 欧洲色色| 六月婷婷香蕉| 五月色精品| 91色五月| 91碰碰碰久久久久| 久久久久久久久久久久久久人妻视频| 五月丁香在线看| 五月丁香六月婷| 婷丁香五月天| 综合深爱五月| 天天干天天干天天干| 九九人人看| 99热在线观看| 快乐激情五月色婷婷| 免费不卡狠操美女视频网| 能看的AV| 久久性刺激| 丁香五月婷婷综合网| 亚洲精品大片| 五月天激情啪啪| 亚洲丁香五月| 久久精品99国产精品日本| 婷婷的99视频网站| 久久这里只有精品热在99| 国产精品久久久久久久久久| 综合激情五月天| 亚洲综合五月天| 玖玖91| 三区激情四射av| 婷婷午夜激情| 99碰在线视频| 黄色AAAAA| 大香蕉久久青青| .操區COm| 激情五月天综合网| 亚洲六月色婷婷| 91精品久久久久、久五月天| 啪啪视频99| 狠狠狠狠狠狠狠狠草| 狠狠干婷婷| 色综合婷婷| 激情伊人| 婷婷激情综合| 六月婷婷av| 9福利性视频欧美| 97碰碰在线观看视频| 五月色婷丁香| 日本操B视频| 九九Y精品热播| 99r这里| ztEJj| 色色免费网战视频| 国产特黄色精品一区二区三区精品无广告| 亚洲看av的网站| 三级毛片视频| 天天色综合综合| 丁香五月激情啪啪啪| 五月天天爽| 91精品国产综合久久蜜芽解析速度| 五月草影视| 99ri视频在线观看| 色五月成人| 婷婷午夜精品久久久| 爆乳熟妇一区二区三区爆乳照片| 激情中文在线| 婷色五月天| 色婷婷九月| 樱花99视频| 国产毛片精品一区二区色欲黄A片 99国产在线精品视频 | 色婷婷亚洲在线| 日本激情综合| 五月丁香五月综合欧美| 97极品在线| 色综合久久伊伊婷婷五月| 婷婷激情综合| 久久婷婷五月草视频| 亚洲黄网AV| 色综合色综合色综合| 日韩成人电影Av| 丁香五月婷婷亚洲综合精品| 久久er视频6| 99免费在线视频| 婷婷五月天激情五月天| 亚洲av无码影院| 丁香五月婷婷亚洲综合精品| 五月丁香激情综合啪| 亚洲精品白浆高清久久久久久| 婷婷五月天亚洲丁香| 色婷婷综合影院| 色婷婷婷婷| 天堂草在线观| 五月天婷婷綜合院| 狠狠精品干练久久久无码中文字幕 | 亚洲一级AV在线免费播放| AV在线观看网站| 五月天激情站| 五月伊人婷婷999| 五月天色色网站| 丁香五月冃欧美| 99热主页日本| 国产视频色色色色色色色 | 婷婷五月天综合亚洲| 狠狠狠狠狠狠| 五月天伊人av| 琪琪色影音先锋| 五月天激情国产综合婷婷婷| www.五月天激情| 婷婷五月色情天| 一级内射毛片| 久久婷婷视频| 激情五月开心五月丁香五月| 五月天婷婷色五月天| 九九久久玖玖爱| 天天操综合网| 久久久久人妻精品| 同性gv国产精品一区二区| 色婷婷91| 99丁香五月| 热99在线| 高清无码入口| 色五月五月丁香| 丁香婷婷网| 丁香婷婷老司机久操| 亚洲综合在线视频| 大香蕉久久婷婷| 黄页大全十八禁| 九九成人精品免费视频| 亚洲国产成人AV在线| 六月丁香五月婷婷| 婷婷五月激情图片| 日韩精品二三区| 婷婷九月激情| 99热这里是精品| 97干婷婷| 国产91在线视频| 丰满少妇猛烈A片免费看观看| 五月色色色| 欧美成人A片AAA片在线播放| 激情五月亚洲综合网| 狠狠干婷婷| 久久久99免费视频| 日本三级片片| 亚洲九九99精品视频在线播放| 99综合免费视频| 在线中文字幕视频| 婷婷色五月开心五月| 思思久久99热只有频精品66| 就爱啪啪婷婷| 亭亭丁香久久五月| 午夜大香蕉| 人人97碰| 色七七九九| 超碰不卡在线| 成人色图情色成人网 www.5b5b5bcom 五月天 | 免费观看欧美成人AA片爱我多深| renrencaoav| 激情五月天婷婷久久久久久久久久久| 99re久久| 五月综合久久| 久久久婷| 五月丁香六月婷| 91丨九色丨白浆| 激情文学第四色婷婷丁香五月| 人人操91色| 人人操碰| 五月丁香九九| 欧美日比视频| 影音先锋四区| 黄色五月婷婷| 极品色丁香| 久久视这里只有精品| 激情深愛五月視頻| 人妻内射麻豆视频| 六月丁香五月激情网| 五月噜噜| 日日夜夜综合| 丁香午夜天| 欧美精品18| 五月丁香婷婷综合久久| 99熟女| 久久激情视频| 日操五月婷| 亚洲人妻一区二区| 有哪些A片网站| 婷婷草| www.91婷婷| 99久在线精品| 五月色网| 色婷青青| 婷婷五月丁香综合桃花色网| 啪啪丁香五月| AV堂狠狠干| 提提热五月天婷婷| 五月婷婷说| 玖玖婷婷五月| 超碰精品在线| 午夜在线成人网站免费观看| 麻豆精品| 九九色人| 森林影视大全,最好看的2019年视频 | 丁香五月婷婷俺也要去| 热99这就是精品视频| 综合久久综合久久| CHINESE熟女老女人HD视频| 99热有精品在线观看| 激情国产综合| 久久婷婷青草五月天| 99热这里精| 舔色婷婷| 91久热| 热久91| 五月丁香| 国色天香伊人狠狠色| 日本色色网站| 69精品人人人人| 高清国产一级婬片a免费| 91欧美日韩综合| www天天干| 无码动漫av| 99热久| 操久久精| 亚洲色情激情丁香五月| 五月天成人在线视频网站| 中文激情网| 婷婷五月综合网激情| 性色播| 99亚州综合精品成人网| 五月婷婷六月丁香综合在线| 玖玖伊人网| 成人五月天综合网| 婷婷五月色情天| 大香蕉久操| 婷婷色五月天色| 深爱激情网婷婷| 91丁香五月| 天天日色情| 91狠狠综合久久久久久| 拳交大逼| 被强行糟蹋的女人A片| www.久久爱.com| 激情小说之五月| 久久99网站| 久久色吧| 九九在线免费观看| 天天激情站| 大香蕉人人人| 99色在线观看视频| www色色com| 天天肏在线观看| 五月天久久丁香| 色婷婷成人做爰A片免费看网站| 97资源碰碰在线| 国产精品五月天婷婷| 可以免费观看的av| www.精品99| 婷婷五月天开心网| 五月婷婷久草| 5月丁香综合网| 亭亭五月丁香五月天激情| 激情五月综合久久| 天天做天天爱天天玩夜夜爽| 福利视频在线播放| www.久久99| 色婷婷六月天| 91丁香| 日本五月婷婷| 伊人天堂婷婷| 欧美激情凹凸丁香网| 亚洲五月天激情| 成人视频一区| 婷婷久久久久| 亚洲色色五月天| 国产精品久久久海的味道| 99精品综合在线| 婷婷色情小说| 8050一级网| 五月婷婷无码专区| 亚州在线中文字幕| 亚洲看av的网站| 51精品国自产在线| 蜜桃婷婷丁香五月天狠狠久久综合| 五月婷婷综合在线| 性爱综合网| 日本色五月| 亚洲色涩视频| 色婷婷狠狠18禁| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 色色色色色色色色色影院| 思思99精品视频在线观看| 91啪啪视频| 婷婷激情综合无月| 97在线观视频免费观看| 天天爱天天做综合| 99热网精品| 狠狠干五码| 97成人视频| 天天爽,夜夜爽| Www.狠狠| 五月天丁香网站| 快乐激情五月色婷婷| 五月天激情小说| 天天摸天天爽| 激情综合视频| 婷婷成年人免费视频| 天天综合五月天| 武则天精品久久| 五月天婷婷丁香| 天天在线久久综合 | 日本色天堂| 另类视频五月天| 婷婷五月天亚洲激情戏精品| 丰滿爆乳一区二区三区| 婷婷五月视屏| 婷婷久久五月天丁香| 欧美婷婷五月丁香| 五月丁香直播| 色五月婷婷影视| 婷婷永久在线| www.色窝| 色五月在线综合| 大香蕉五月婷婷| 玖月婷婷爱丁香| 日本一级黄色片。| 五月天综合婷婷| 99日本精品视频热| 五月天激情国产综合婷婷婷| 色丁香影院| 成人av播放| 麻豆AV一区二区三区| 影音先锋777xfplay色资源网站| 一区二区免费看| 色99在线| 九九色综合九九色| 99精品国产在热久久| 色色综合网www| 色九月婷婷丁香| 色综合xx| 超级碰碰视频无码| 狠狠干无码| 激情五月天激情综合网| Av大香蕉| 日韩人人操| 久热这里只有精品6| 五月天 另类图片| 色色丁香| 色婷婷色和| 99热这里只有精品8| 99热在线只有精品| xxxx五月| 久久的爱大香蕉| 免费看欧美成人A片无码| 开心五月天激情网| 久久成人综合五月天| BT综合在线视频观看| 无码91中文字幕| 久久久www| 亚洲精品激情| 亚洲激情高潮| 97碰碰视频在线观看免费| 99人妻碰碰久久久禁片| 色色色色色色色色五月先| 日撸夜撸日操| 26uuu欧美日韩| 高清国产AV| 久久您您综合网| 色99视频| 亚洲欧洲国产精品| 亚洲99热| 五月丁香六月婷婷中合网| 大香蕉网站,大香蕉综合| 羞羞嫩草视频| 日产精品久久久久久久蜜臀| 无码啪啪| 激情综合五月婷婷| 色婷婷九月综合| 五月婷婷六月丁| 国产操B视频| 99在线免费视频播放| 天天日天天插| 日本三级大片| WWW,五月| 99热在线看| 午夜五月天| 99精品爱| 色婷婷综合五月| 26uuu.| 久久九九视频网站| 婷婷五月丁香综合| 五月婷婷,狠狠操| 99玖玖视频| 亚洲在线网站| 在线不卡AC| 综合色图婷婷| 欧美日韩成卜| 色色网站毛片| 少妇出轨做爰高潮A片| 99国产精品久久久久久久久久久 | 日韩性爱AV| 国产欧美日韩综合精品一区二区| 人人草人人爱| 狠狠做婷婷| 夜夜撸夜夜骑| 狠狠操狠狠操AV| 婷婷成人视频| 亭亭玉月丁香| 99热婷婷| 亚洲五月天激情| 色99视频| 蜜桃人妻无码AV天堂三区| 五月天婷婷久久| 大陆极品少妇内射AAAAAA| 熟女人妻一区二区三区免费看 | 99爱视频在线| 99久久99九九99九九九| 九九热在线精品| 91九色首页| 九九视频在线观看视频6 | 婷婷五月成人| 亚洲日韩乱码一区二区三区四区| 欧类av怡春院| av婷婷丁香| 婷婷丁香色性爱| 91超级碰在线| 五月天激情图片| 国产亚洲精品人人| 六月丁香婷啪射| 色综合色色色色色| 五月丁香婷婷六月| 91热网址| 五月天色社区| 国产欧美精品AAAAAA片| 97超碰,人人舔,人人操,人人摸 | 99碰网站| 激情五月天在线观看婷婷| 99热思思在线观看| 操操操操操电影网| 99热99热在线| 亚州色婷婷| 黄桃AV无码免费一区二区三区| 伊人五月婷| 婷婷伊人75| 99re熱| 五月婷婷狠狠干| 偷拍91九色| 久99| 久久33视频| 久99久视频免费观看| 开心六月婷| 伊人午夜综合色啪| 久久综合影院 | 日日躁夜夜躁狠狠久久AV| Caoub青青超碰 | 亚洲射激情| 开心婷婷五月| 五月天狠狠| 91操黄| 亚洲综合成人网| 五月四色婷婷| 99欧州偷拍视频| 思思热在线| 亚洲精品中文字幕成人片| 99热这里只有精品26| 中文字幕色色色| 亚洲人妻AV| 五月婷A V在线| 中文字幕在线日亚洲9| 色色色色色色综合| 日韩操逼大片| 久久九九热38| 欧美激情综合| 久久久久久久久人妻| 91色婷婷综合久久中文字幕二区| 天天综合网~91| 五月天丁香六月综合| 五月婷婷啪| 亚洲激情AV| av无码电影| 九六五月天婷婷| 91啪啪视频| 六月色 亚洲| 激情综合婷婷五月| 人人摸人人澡人人| 欧州婷婷五月天综合| 开心婷婷五月中文字幕组| 97在线/亚洲| 欧美天天性| 天天插天天插天天插天天插| 91在线资源| 丁香丁香激情网| 色综合久久中文| 99九九这里有免费视频| 99热免费精品热久久66| 免费亚洲婷婷| 色99最新网址| 色五月婷婷激情综合网| 日日干天天| 热99玖玖99玖玖99九九| 99在线观看视频免费| 五月丁香六月婷婷成人电影| 丁香五月婷婷啪啪视频| 五月天另类小说亚洲| 丁香五月手机在线| 日本少妇AA一级特黄大片| 午夜性爱影视一区77| 色五月激情五月天| 99热在线资源| 天天日天天干天天天| 丁香性爱在线视频| 99亚洲综合| www.99在线| 色色色在线观看| 久久这里都是精品| 91在线精品一区二区| 新五月天婷婷激情电影| 激情五月天婷婷| 激情五月丁香五月| 久久久99视频| av最新在线| 五月丁香啪啪综合| 奇米色大香蕉| 人人看人人要| 人妻第九页| 激情综合激情五月| 亚洲12p| 色欲五月天| 三人荫蒂添的好舒服A片| 琪琪秋霞| 激情综合五月婷婷| 人妻内射麻豆视频| 99热国产| 丁香婷婷免费| 一本大道熟女人妻中文字幕在线| 美女亚洲五月丁香| 综合网色| 婷五月丁香| 最近韩国日本免费高清观看| 久久这里只有精品07| 五月天婷婷成人网| 久久视频婷婷视频| 亚洲春色奇米影视| 久热只有这里精品| 另类图片五月天婷婷|