免费国产精品自在自线-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
返回資訊列表
日本天天色| 色五月婷激情| 国产在线激情视频| 久久综合干| 色婷婷综合影院| www.综合久久.com| 深爱激情综合网| 五月天激情久久| 久久香蕉影院| 婷婷六月天国产综合| 亚洲综合色色| 五月天色婷婷小说| 秋霞电影一级黄| 依人大香蕉| 九九色99| 激情伊人六| 日韩情色在线观看| 久久机热/这里只有精品| 九九色中文| 天天肏视奸| 99热99ai| 五月婷婷性爱| 热久国产| 99热综合在线观看| 婷婷在线中文字幕| 91九色中文字幕女在线观看| 五月天第四色开心色播| 九月丁香| 无码少妇高潮喷水A片免费| 日韩色情亚洲五月天婷婷| 97人妻碰碰碰久久久久-最近国语高清| 亚洲激情婷婷| 久久丁香五月综合六月激情红杏视频| 99精品综合| 99色1| 亚洲春色奇米影视| 被强行糟蹋的女人A片| 99热a片免| 色情综合网| 婷婷综合在线网| 丁香五月伊人| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月天色婷婷基地| 中文不卡一二区| 国庆精品久久| 99热这里只有精品13| 精品久久人妻| 9l视频自拍9l九色9l成人| 欧洲免费视频色| 安息电影在线观看完整版| 操97在线观看| 91操在线| www.夜夜爱.com| 婷婷伊人綜合中文字幕小说| 综合大香蕉| 激情五月婷婷视频一区二区三区| 婷婷成人AV| 婷婷五月天激情小说网站| 五月丁香啪啪综合| 这里有精品99| 日本久久婷婷| 大伊香蕉玖玖爱| 亚洲AV免费在线| www.狠狠艹| 天天拍久久| 婷婷丁香五月天在线视频| 婷婷丁香视频在线观看免费| 九九色色网| 丁香婷婷超碰| 99亚洲精美视频在线观看| 一片AV片免费播放| 色~性~乱~伦~噜| 五月天婷婷基地综合网| site:pzdcoin.com| 99色1| 大香蕉九操| 激情99热| 五月婷婷伦理| 亭亭五月色男人| 国产精品日韩十五区| 久久五月天激情美女| 99啪视频在线观看| 97久久视频| 色噜噜狠狠色综合无码久久欧美| 99精品视频免费观看近期发布| 99色网站| 日本玖玖在线| 国产在线自| 色婷婷AⅤ| 亚洲视频二区| 日韩操| 五月丁香婷婷爱激情综合网| 免费日韩99| 色色五月天丁香婷婷| 日韩在线99| 97人人干人人操| 99视频这里只有免费精品| 综合综合色色| www,色婷婷| 久操婷婷| 天天日天天色| 天天综合色| 天堂成人A片永久免费网站| 啪啪五月婷婷| 99热爱爱干干日| 天天操天天曰天天射| 五月婷婷之综合激情在线| 国产超碰人人| 婷婷激情五月天亚洲综合| 看国产探花操逼三级片| 亚洲va综合va国产va中文| 色色国产| 婷婷酒色网| 免费黄色AV| 天天色综网| 欧美精品999| 精品一二三区久久AAA片| 亚洲av成人电影在线观看| 成人五月丁香花| 91fuliwang| 六月丁香开心婷婷欧美| 久久人人九九| 99热一区| 五月婷久草| www。五月天激情| 婷婷丁香五月天色区| 色婷婷综合久久久久| 天天操夜夜玩!| 日日夜夜狠狠| 亚洲精品色| 热热99爱爱| 色五月天网| 五月天激情小说| 97久久精品视频| 精品久久婷婷五月天| www,天天干| 极品少妇XXXX精品少妇偷拍| 99视频色在线观看| 久机视频这只有精品| 任你干aa| 99热亚洲| 久久婷婷久久| 激情99| 伊人影音无码一区二区三区| 五月激情婷婷女| www.久久久久| 丝袜激情网| 丁香婷婷久久综合在线| 五月丁香六月婷婷久久| 91狼友视频网页更新| 久久久久9999| 97碰碰人人| 996热re视频精品视频这里| 久久综合人妻| 丁香五月婷婷欧美成人色图| 人人人人人人人人人草| 99久久婷婷国产综合精品草原| 中字幕视频在线永久在线观看免费| 六月婷欧美丁香综合| 色五月婷婷少妇人妻| 六月天无码网址| 26UUU欧美| 伊人网碰碰| 99视频在线观看网址| 丁香五月天AV在线 | 五月天婷婷久久| 婷婷九月丁香中文| 亚洲婷婷欧美婷婷| 天天弄天天操| 六月丁香深深爱| 五月天成人在线视频网站| 91久热| 久久新地址| 果冻传媒A片一二三区| 精品久热| 影音先锋美国A| 精品九九视频| 4399在线观看免费高清黄色视频| www.婷婷五月天| 婷激情五月| 丁香五月天激情综合| 亚洲精品成人片在线播| 人操91在线| www.成人婷婷综合| 好叼操在线观看| 色色色激情| 99热这里只| 九九综合色综合| 天天插天天插天天插| 五月丁香啪| 婷婷五月天丁香社区| 久8色色| 婷婷丁香五月天之开心少妇| 婷婷狠狠操| 天天性视频| 97人人干| 色五月成人| 97色色婷婷| 九九热精品在线| 色五月天.con| 久久婷婷原创视频| 丁香五月婷中字幕| 亚洲综合在线伊人婷| 99久久久99久久91熟女| 日日.c| se婷97| 久热视频这里只有精品68| 亚洲第一黄网| 97色射| 色欲婷婷五月天丁香| 精品无码久久久久久久久| 精品综合五月| 综合九九日本| 国产美女无遮挡裸体毛片A片| 久操香蕉| 思思久日精品视频| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 丁香五月亚洲激情婷婷射| 直接看的AV| 婷婷五月天综合网| 婷婷色色丁香| 伊人久久丁香狠狠婷婷综合香蕉| 亚洲五月婷天天操| 色啪综合| 97久久五月丁香婷婷| 色五月婷婷网| 中文字幕黄色片| 9久热精品在线视频| 婷婷五月综合亚洲| 久久最新色色色| 中文激情网| 综合色情网| 婷婷五月丁香激情| 人妻九九九九| 久久伊人五月天| 秋霞A V毛片| 俺去也五月天婷婷| 激情五月天免费视频| 丁香色综合| 深爱激情五月网| 五月丁香婷婷久久| 久久视频婷婷| 操骚货在线| 97久久精品视频| 五月天久久久| 久久天天| 无码人妻一区二区三区免费九色| 婷五月天在线草| 婷五月天| 91seAV| 五月丁香777| 高潮毛片遮挡费高一百度| 六月婷婷色色色| 激情五月综合网| 日韩性视频| 五月天成人综合| 九九九九九九九热| 天天搽天天射| 婷婷五月激情丁香激情| 国产熟女大叫受不了| 婷婷六月天| 九九碰九九爱97超| 另类小说五月天| 婷婷激情5月| 久草视频大香蕉99| 一起草av在线观看| 婷婷五月激情图片| 青青艹b| 五月丁香影院| 99无码精品| 99视频| 99热这里只有精品最新网址| 色999五月色| 五月丁香综合啪啪啪啪啪| 日韩欧美成人一区二区三区| 婷婷激情97| 色综久久久| 成人电影AV在线观看| 丁香五月激情图片婷婷| 五月天婷婷无码| 九九久久9 9在线观看| 国产欧美第五十五页| 五月综合色| 这里只有精彩亚洲视频推荐| 色色热| 色欲午夜无码久久久久久张津瑜 | 婷婷日| 久re热视频| 国产高清av黄色看片| 久久久中文| 性爱视频99| 久婷婷| 无码色色色| 国产暴力强伦轩1区二区小说| 五月日韩中文字幕| 欧美日韩五月婷婷| 视频久久9| 一月婷婷色色| 天天草狠狠擦| 激情综合网激情五月天| 五月激情偷拍| 狠狠爱丁香婷| 99久热在线精品| 婷婷色啪| 婷婷伊人网| 五月丁香六月婷婷激情四射| 久久精品日| 91精品久久久久久久久| 婷婷开心青青草| 丁香五月婷婷啪啪啪| 丁香五月激情宗合网| 五月丁香婷婷成人伊人网| 日本www五月婷婷| 丁香久色| 五月丁香婷婷潮喷中文字幕| 亚洲天堂aaaa| 操97| 天天夜天天色天天| 丁香五月激情视频在线| 少妇人妻综合色6699| 婷婷五月天国产精品| 这里只有精品免费在线视频| 尔尔AV一区| 五月天色社区| 成人做爰高潮A片免费视频| 碰超在线九色| 亚洲日韩26uuu| 天天综合亚洲综合| 婷婷丁香五月综合网上| 免费啪啪亚州视频| 天天色粽合合合合合合合| 可以免费观看的AV| 超色欲天天| 五月天久久婷婷婷| 99色网站| 9福利性视频欧美| 思思热这里只有精品视频666| 这里只有精彩小视频视频网站| 丁香六月婷月91婷月| 99精吕视频在线观看了| 色五月婷婷中文字幕| 激情五月综合网丁| 五月天中文字幕在线婷婷| 狠狠五月综合在线 | 在线观看av网站| 婷婷天堂站| 日韩黄色电影| 天天上天天爽| 色婷亚洲| 丰满人妻妇伦又伦精品国产| 精品99这里有| 色五月大| 99热官网| 久久五月天激情美女| 天天爱天天做天天| 超碰日韩人妻在线| 婷婷五月丁香综合| 色五月婷婷色五月婷婷色五月婷婷| 丁香五月综合激情啪啪| 天天色中文字幕女优AV| 色久影院| 99在线精品免费视频| 久久婷五月综合| 五月丁香婷婷俺| 丁香五月成人在线| 婷婷五月天AV| 色v综合网| 丁香五月六月婷婷综合| 日本不卡一区二区三区| 五月丁香激情综合六月涩涩爱| 日韩婷婷| 天天色五月| 色五月网址| 99热99网| 97碰| 色婷婷狠狠| 色XX综合网| 99视频综合网| 青草热视频这里只有精品| 国产精品久久久久久白浆色欲| 中文字幕成| 久久久精品色色色| 激情视频综合| 3p日韩网站视频| 亚洲字幕AV一区二区三区四区| 七七九色| 99ri精品在线| 草久私拍| 色噜噜婷婷| 白人荫道BBWBBB大荫道| 这里只有精彩亚洲视频推荐| 婷婷五月六月丁香| 91黄址| 99啪在线| 少妇综合网| 天天五月丁香五月| 久久R激情| va婷婷在线免费观看| 综合亚洲六月婷婷在线| 97干网站| 伊人日日干| 色综合色香蕉网| 日韩精品二三区| 51精品国自产在线| 这里只有精品视频在线| 秋霞网在线免费基地五月婷婷丁香| 久久视频这里都是精品| 99九九这里有免费视频| 人人草人| 激情五月图| 亚洲综合五月天婷婷丁香| 丁香5月啪啪| 日本色婷婷| 激情五月四色| 婷婷色六月| 五月天婷婷激情在线色图| 五月六月丁香婷婷在线观看| 色五月中文字幕| 激情亚洲色图片丁香综合| 伊人99久久| 久久久久人无码人妻| 婷婷五月激情在线| 久久xxxx| 五月激情小说| 色色色色色色色色五月先| 99啪| 伊人五月丁香| 久久五月天婷婷视频| 中文字幕 中文字幕明步| 久久66er久久| 久久久久这里只有精品| 综合色五月天| 五月婷色丁香| PORNY九色9l自拍视频成人| 久久黄色网扯| 国产精品成人网址| 99视频只有精品| 开心婷婷中文字幕| 五月婷色啪| 99九九热播在线免费视频| 欧美婷婷日本| 亞洲自怕| EEUSS鲁片一区二区三区| 久久99这里| 婷婷性爱视频在线| 中文字幕黄色片| 色色色色av色色色色| 五月天婷婷基地丁香| 久久五月婷综合网| 婷婷五月天av| 色色丁香婷婷| 婷婷内射视频在线| 日本天堂免费99| 色婷婷在线电影| Av九九| 狠狠操综合| 亚洲精品V天堂中文字幕| 日韩在线视频中文字幕| 精品久久这里热66| 五月色婷婷综合丁香精品无遮挡| 97超碰欧美中文字幕| 久久久天堂国产精品女人| 在线99热| 国产玖玖资源| 这里只有精品免费视频在线观看| 情色五月天网站| 国产精品久久久久9999小说| 乱岳熟女50岁| 26uuu精品一区二区| 婷婷五月电影| 五月丁香久| 久久丁香五月| 丁香五月综合激情性爱| 激情深爱五月天| 久久五月天激情| 激情五月天小说视频| 六月色狠狠色| 爱婷婷五月| 中文字幕不卡+婷婷五月| 98永久精品| 99热在线看| 噼里啪啦在线观看免费完整版视频 | 天堂网啪啪| 丁J香六月首页| 色色六月| 日本不卡一区二区三区| 五月花婷婷| 九九热精品视频| 九月大香蕉| 婷婷伊人五月丁香天堂网| 精品一区二区三区免费毛片爱| 国产成人AV在线播放| 99色啊| 97超碰人人操| 另类视屏| 激情欧美婷婷| 五月天色在线| 99热这里有精品| 免费精品66| 99色色热| 99av视频| 九九热av| 天天狠狠色| 久鲁鲁色网| 国产中文亚洲欧美日韩性交| 5月婷婷6月丁香aV| 五月天色婷婷基地| 激情综合网址| 久久一级AV| 久热99久热| 九热精品| 狠狠丁香| 日韩久久系列| 婷婷综合色色| 思思热99在线视频| 亭亭五月色男人| 99热久久这里只有精品| 五月天电影网| 国产日韩av片| 26UUU亚洲欧美| 草综合网| 日韩五月丁香| 91狠狠综合久久久| 亚洲Av成人在线观看| 97性视频| 欧类av怡春院| www,99视频| 久9热在线视频| 99热在线看| 噜噜狠狠色综合久| 激情丁香婷婷| 婷婷综合精品视频97| 亚洲色色香蕉| 能看的av| 999热视频精品99免费在线| 97干在线观看| 这里只有精品9| 我爱大香蕉| 99热99色| 色五月天堂| 99亚洲视频| 97九色| 亭亭社区五月天| 天天插综合| 99亚洲天堂| 久久区区一二三av| 久久 这里只有精品1| 婷婷五月天在线综合| 五月婷婷无码| 五月天久久婷婷| 丁香五月天堂网| 免費观看aV在线网址| 久久天堂| 婷婷国产成人| 丁香深五月婷婷| 激情q青青草在线婷婷| 26uuu欧美| 久久久久久久久久久-久五月天婷婷| 99热草草| 麻豆123区| 色五月丁香网| 性按摩玩人妻HD中文字幕| 日本久久高清| 久久婷婷网| 午夜成人在线免费视频| 欧美日本一区二区三区| 日韩av一区二区在线/日产精品久久久| 天海翼中文字幕高| 天天操天天操| 女人被躁到高潮嗷嗷叫小| 五月天婷婷日日爱| 亚洲日日操| 一级二级色大片| 99久久色| 丁香五月激情综合| 日韩AV中文在线观看| 99亚洲综合| 婷婷五月天av| 五月婷婷亚洲| 九九综合色综合| 婷婷九九色| 国产色五月| 五月天啪啪视频| 99热国内精品| 精品牛仔裤超碰| 97色色色色色色色色色色色色色| 婷婷中文在线| 五月天怕怕| 开心婷婷五月激情网小说| 婷婷五月天综合在线| 久久XX| 激情婷婷五月女| 热久久这里只有精品| 日亚二欧美| 在线中文字幕av| 丁香五月开心五月激情| 久草丁香婷婷五月天婷| 99在线播放视频| 婷婷五月天国产精品| 狠狠干天天日| 五月丁香999| 丁香五月影院| 五月婷婷大香蕉| 婷婷五月在线观看| 丁香五月久久综合| 日韩久久成人| 九九九午夜影院成人| 91丨九色丨首页| 操骚货在线| 日韩无码人妻一区二区| 97人人草| 午夜性做爰电影| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 开心婷婷五月天综合| 五月婷婷丁香五月| 亚洲AV成人无码精品| 99久久玖玖| 色婷婷综合成人| 五月丁香久久| 久久婷婷五月丁香网| 久热视频这里只有精品| 婷婷情色五月天| 婷婷综合视频| 变态另类9| 久久综合影院 | 久久婷婷五月天懂色| 久久婷婷成人综合色怡春院| 精品人人操| 99re热视频这里只精品| 人人操AV| 久热9| 色狠狠婷婷| 狠狠激情五月天| 先锋资源91| 久久香蕉网| 97人操| 激情五月天视频| 欧美噜噜噜草| 五月天开心网| 婷婷五月骚厕所| 天综合日日夜综合7799| 色婷五月天| 无码人妻一区二区三区免费九色| 99在线播放| 国产激情久久久| 色婷婷亚洲六月婷婷中文字幕| 国庆精品久久| 超碰色婷婷| 996er热| 亚洲婷婷五月天综合| 日本色99网站| 开心五月婷婷在线| 99超级碰碰| 嫩草免费视频| 玖玖热视频| 五月婷婷六月激情在线| 激情婷婷五月| 丰满少妇乱A片无码| 激情五月天色色网| 丝袜激情网| 爱的综合网| 久久婷婷五月综合| 20253AV| 玖玖色综合网| 色婷婷激情四射视频| 伊人99热| 亚洲人妻av| 99在线视频在线观看| 久草 tingting| 蜜臀99精品| 插插网爽妇五月丁香| 久久99网| 欧美超级视频97| 996热re视频精品视频| 成人丁香婷婷| 五月开心久久| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 91色情播放| 五月天婷婷久久综合| 99视频这里有精品| 五月天激情小说| 久久九九热视频| 日日爽日日| 99热在线精品观看| 精品五月天| 五月花婷婷丁香| 欧美色婷婷| 草榴视频黄色网| 色婷婷av综合网| 国产伦亲子伦亲子视频观看| 亚洲V国产V欧美V久久久久久| 五月丁香六月激情综合| 九九色人| 美日韩成人| 双性美人被调教到喷水A片| 日本熟妇精品99| 丁香啪啪| 另类少妇人与禽zOZZ0性伦| 欧美三日本三级少妇三99| 亚洲熟女色| 婷婷丁香在线| 色爱综合视频| 人妻视频一区而且二区| 色五月色情| 久久精99| 丁香五月玖玖| 久久五月婷综合| 成人深爱丁香五月| 久久亚洲无码| 秋霞av不能| 五月婷婷综合天天操| 成人综合视频网址| 成人网站高清无码| 欧美婷婷色五月网| 97亚洲精品| 久久看九九90| 日韩aⅴ视频| 综合色色婷婷| 久久草人妻| 久久人妻伦理| 99免费视频| 校花娇喘呻吟校长陈若雪视频| 国产毛片精品一区二区色欲黄A片| 久久激情四射| 天天综合久久| 亚洲VA在线| 日日日天天干| 激情综合网五月婷婷| 欧美大片| 婷婷激情视频| 日本色频| 色丁香影院| 狠狠做深爱婷婷久久综合一区| 婷婷久久色| 99综合视频| 超级碰碰一区| 日韩另类在线观看| 超碰超碰在线| 国产色五月| 91碰碰碰| 国产偷人爽久久久久久老妇APP| 精品无码久久久久久久久| 99九九这里有免费视频| 天天爽人人综合免费7799| 97五月久久丁香婷婷| 这里有精品99| 亚洲色vA| 五月开心久久| 久久色五月| 九月丁香八月婷婷加勒比| 国产激情久久| 超碰爱爱爱| 亚洲综合欧美色丁香婷婷888月图片 | 99热精品观看| 天天色视频| 丁香五月色激情| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888| 五月婷丁香在线视频在线| 在线不卡视频| 婷婷五月丁香花综合| 色婷婷六月丁香综合欲精品| 色婷婷呢狠禁久禁| 欧爱综合视频| ..真实国产乱子伦对白在线_欧| 狠狠色丁香五月婷巨| 久噜久噜| 97爱艹婷婷开心丁香激情综合| 只有精品在线观看| 天天爽天天干| 六月99天天婷婷激情综合| 99久超碰| 五月丁香激| 精品少妇蜜臀91| 情欲禁地| 在线99热| 99性色| 精品操逼一区二区| 婷婷五月天激情文学| 99久久天堂婷婷| oumeisesewang| 婷婷九月| 六月丁香综合网| 国色天香成人网| 大香蕉精品视频| 99碰碰| 五月丁香婷婷成人版| 2018国产大陆天天弄| 久久99免费视屏| 成人免费va| yazhoujiqingav| 久久人妻高清中文| 日本欧美成人片AAAA| 五月天激情四射| 丁香成人五月天| 欧美成人无码一区二区三区| 国产日产亚洲系列最新| 天天 青草 制服丝袜 在线| 91九九| 九九综合视频在线观看| 国产婷婷色综合AV蜜臀AV | 亚洲99在线视频| 一区操| 91人人操人人爱| 超级碰碰碰碰视频| 六月丁香激情网| 婷婷的99视频网站| 色五月婷婷五月天| 亚洲色激婷| 亚洲成AV人片在线观看| 国产日韩欧美性爱| 久久久人妻不卡| 国产操碰| 激情四射五月天| 精品一二三区久久AAA片| 99热这里只有是亚洲国产| 色五月婷婷影院| 玖玖午夜视频| 色九月婷婷丁香| 婷婷99狠狠| 日韩色色色色色| 日本二级毛片二级毛片| 婷婷色综合| 激情五月天在线观看色婷婷| 色色色图| 色色色在线免费视频| 欧美日韩婷婷五月天| 五月天婷综合| 高清无码一区二区三区四区| 97日在线视频| 国产AV一区二区三区日韩| 九九操综合网| 久久久久视剧HD| 一本色道久久综合狠狠躁小说| 久久加勒比| 成人片在线播放| 天天爽夜夜爽夜爽精品| 国产在线中文字幕| www.99热| 亚洲色综合性| 可以免费观看的av网址| 曰韩少妇内射免费播放| 在线天堂9| 五月婷婷精品视频| 国产在线自| 99热在线观看| www九九热| 亚洲妇女熟BBW| 91色噜噜狠狠狠狠色综合| 思思热99在线| 99re66热这里只有精品| 无码激情AAAAA片-区区| 婷婷的99视频网站| 色国产五月| 狠狠爱婷婷爱| 色爱爱综合网| 激情综合无码| www.99热| 99久热这里有精品| 男人天堂99| 青青草视频免费观看| 97色色色色色| www.ppypp| 激情伍月 欧美| 一区二区三区四区牛| 久久久97| 五月成人综合| 襙逼网| 国产色色网站网址| 久久香蕉婷婷| 欧美大肥婆大肥BBBBB| 亚洲区视频| 思思热在线观看| 婷婷激情综合无月| 无码色色色色色| 中文精品在| 婷婷5月久久综合网站| 97操在线视频| 国产9色在线/日韩| 亚洲色图五月丁香| 激情五月婷黄版| 逼逼AV| 久久女人天堂| 97久人人| 97精品自拍视频| 日本一级黄色片。| 熟妇内谢69XXXXXA片| 色婷婷电影网| 疯狂做受XXXX高潮A片| 91精品综合久久婷婷九色| 久久激情五月婷婷| 婷婷爱五月天| 日韩精品一区二区亚洲AV观看 | 久人操| 涩九九九九| 色色欧美色色| chaopengdaxiangjiao| 色五月情| 丁香五月婷中字在线| 99热国产| 国产精品久久..4399| 97碰| 丁香五月在线| 大香蕉人妻| 久久性操| 丁香成人视频| 久久精彩视频| 亚洲va欧洲va国产va不卡| 五月 丁香 欧美| 丁香五月 六月婷婷首页| 人妻久久久久久久久妻久久久久久久久 | 综合热无码| Xx色综合| 99精彩视频在线观看| 天天日日夜夜爽| 天天拍天天做视频| 五月天激情综合网站| 狠狠五月丁香色婷| 天天精品视频在线观看视频| 婷婷涩涩五月天| 曰曰久久| 丁香激情四射| 三级三久久线久久99久目本WW| 成人视频网| 色婷婷综合久色AV五色最新| 五月婷婷九九热| 天天看A片| 久久99婷婷| 婷婷中文无码| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 婷婷五月天色色| 伊人婷婷大香蕉| 综合网色| 成人精品网站在线观看| 激情婷婷22月间| 生活片五区| 亚洲综合五月天综合| 丁香五月婷婷成人综合| 亚洲综合丁香五月| 丁五月激情视频免费| 高清无码入口| 开心五月婷婷| 亚洲妇女熟BBW| 婷婷丁香色性爱| 婷婷五月天美女| 天天日天天摸天天| 99热这里精| 丁香五月开心五月激情| 很很干天天干| 婷婷99视频精品| 免费观看全黄做爰的视频| 久热婷婷综合| 热久国产| 色五月视频,小说| 五月天激情电影| 热久91| av在线观看网站| 免费视频舔| 亚洲AAA| 九热视频| 午夜成人片400| 啪啪啪丁香五月| 五月天婷婷情色| 九月婷婷丁香| 色婷婷综合网| 成人亚洲精品久久久久| 五月天婷婷免费| 丁香婷婷视频一区二区| 色玖玖导航| 五月天丁香婷婷视频网址 | 中文成人在线| 老师高潮流白浆喷水的A片| 久久色情| 婷婷六月中文字幕| 99热在线精品观看| 丁香五月婷婷色偷偷| 五月婷婷m| 五月丁香成人网| 五月四色激情| 韩国情人在线电视剧免费观看高清版全集 | 99色性爰网络| 伊人碰碰婷婷| 69堂午夜视频最新地址| ji'qi'luan'ren'lun| 欧类av怡春院| 密黄站| 任你草| 色九九九综合| 天天插天天狠| 色婷婷综合视频| 色久影院| 五月婷婷影院| 综合激情在线观看| 久久婷婷五月综合伊人| se色婷婷视频| 婷婷综合| 久久久这里有精品| 97超碰色| 五月伊人婷婷| 中文字幕无码人妻少妇免费视频| 婷婷五月天丁香激情| 深爱激情四射| 五月激情天| 色婷婷色五月另类综合| 九九成人视频| 99久久玖玖| 色老久久| 99福利视频导航| 五月婷六月综合在线观看| 思思热视频在线观看| 色99视| 伊人五月综合网| 亚洲国产精品VA在线看黑人| www色婷婷久久综合久色 | 久草x色在线观看99| 热99热9| 久久婷五月影院| 亚洲avjiujiur91| 久久在这里99| 亚洲国产成人综合| 天天干,夜夜爽| 66久久视频在线| 国产精品第一国产精品| 狠狠做五月| 色五月婷婷色| 激情五月丁香激情综合网| 久久这里只有精品视频15| 人妻性爱| 狠狠色噜噜狠狠狠狠综合| 精品五月丁香| 五月婷A V在线| 婷婷王月天影院| 99碰视频| 六月丁香五月天| 五月色情婷婷开心五月色情| 免费91久久精品| 婷婷五月天com| 久久久日韩特色特黄AAAA| 色天五月天在线观看视频| 在线观看亚洲视频影院| 婷婷丁香人妻天天爽| 久久婷婷五月草视频在线播放| 色丁香五月| 六月婷婷七月丁香| 超碰在线个人观看| 九九热视频精品| 日本大逼91| 亚洲成人一区| 深爱激情网婷婷| 99碰在线视频| 五月天色区| 成人色图情色成人网 www.5b5b5bcom 五月天| 亚洲色模骚货| 久久精典| 五月天伊人网| 丁香六月色婷婷欧美| 超碰九热| 亚洲综合视频在线| 五月天激情国产综合AV| 97碰碰在线观看视频| www.狠狠| 五月丁香色婷婷基地| www,com,五月色色| 综合色影| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 久久久这里有精品| 成人AV综合在线| 伊人在线视频| 91精品电影18T| 9久热在线精品| 99热伊人| 操丝袜视频影院导航| 91人人网| 久久久久久久91| 色播播五月| 天天上天天爽| 丁香五月婷婷国产在线| 久久九九国产精品怡红院| 天天做天天爰天天爽天天无遮挡| 色99婷婷五月天| 亚洲精品久久久久久久久久吃药| 99人人操人人摸| 任你艹| 超喷97免费在线视频| 99色干| 激情五月六月婷婷综合啪啪| 91久久综合| 99热超碰人| 色婷婷成人| 丁香五月婷婷激情中文| 日本97在线视频| 97亚洲精品| 国产精品人人做人人爽人人添| 九月婷婷激情| 99在线观看这里都是精品| 久草五月天| 免费无码毛片一区二区A片| 人妻AV在线观看| 伊人五月天在线| 五月婷婷网久久| 99综合视频在线| 色情五月天丁香社区| 国产免费av网站| 久久久一级AAA| 色优久久| 九九在线精点品| 色婷婷88| 69午夜成人影片| 97干在线播放| 五月丁了香蕉综合| 九色综合五月天婷五月| 99热在线观看| 最近韩国日本免费高清观看| 五月丁香影院| 五月丁香六月婷婷中合网| 色 免费网站视频| 91操片| 91超级碰在线视频| 五月天婷婷综合色| 亚洲亚洲人成综合网络| www.99色| 久久五月视频| 久久久99免费视频| 久久欧洲综合网| 五月丁香五月天现场视频| 五月天a婷婷伊人| 人妻AV在线观看| 色女人久久| 亚洲 视频 导航 一区| 日本久久人| 亚洲婷婷久久综合| 91.com男女操| 另类专区在线| 成人短视频在线观看| 亚洲色情久久| 成人精品一区二区三区四区五区| 中文字幕婷婷五月天| 天天综合91入口| 成人AV中文字幕| 久久久久九九九九视屏小说88| 激情五月激情综合网| 婷婷在线免费| 这里只有精彩视频| 丁香五月成人| 黄色片久久| 日韩人人操| 九九精品亚洲| 亚洲无码播放| 激情五月黄色小说| 啪啪啪啪五月天| 亚洲美女网Va| 91无码色色| 亚洲婷婷性爱| 婷婷激情五月| 色伊人婷婷| 丁香五月色| 婷婷综合在线| 色婷婷激情| 色婷婷成人色网| 无码激情AAAAA片-区区| 成片免费观看视频大全| 一本道在线电影| 丁香五月偷拍| 一级片无码| 91精品人妻少妇无码影院| 五月丁香综合啪啪| 丁香八月综合激情| 丁香五月综合在线观看| 丁香激激情网| 天天干天天操天天射| 很很干天天干| 国产性av| 久久玖玖综合| 久热69| 婷婷六月丁香在线| 婷婷丁香综合成人| 丁香 婷婷 亚洲 熟女| 婷婷五月色综合| av九九| 1024你懂的欧美曰韩| 亚洲视频1区| 伊人久久婷婷| 思思热久久爱| 99爽视频| 久久久99精品免费观看| 五月综合激情啪啪啪啪啪| 91在线视频综合| 99热在线免费观看精品| 色色色色综合| 黄网在线观看免费| 99国产精品久久久久久久久久久 | 色婷婷aV四虎| 六月丁香啪啪| 丁香五月 综合| 东北婷婷五月天| 久久五月天视频| 开心激情网五月天| 碰人人97| 4399在线观看免费高清电视剧| 五月天婷婷在线观看精品男人| 五月天激情婷婷五月天久久| 91热视频色网站| 五月综合激情久久| 亚洲四色五月| 色婷五月天| 这里只有精品网| 日本天天色| 亚洲三A| 99免费综合网| 99热色精品| 开心五月深爱五月| 99热九九在线| 五月丁香色婷婷熟女| 狠狠操狠狠操AV| 久久九九婷婷| 五月丁香六月合| 五月天综合| 久久电影五月天丁香电影| 丁香五月 综合| 日良久久| 97干在线看| 夜夜操天天爽| 欧美在线| 丁香九月激情久久| 久噜久噜| 99re6在线视频精品免费| .comwww在线观看免费操| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 天天干,夜夜爽| 1024久婷| 涩五月丁香| 久久总和99| 丁香久久九九99| 思思热在线视频观看精品| 婷婷成人综合| www.com亚洲网站在线免费| 久久这里有精品视频| 亚洲精品久久久久久久久久飞鱼| 天天艹天天综合网| 免费五月婷婷网| 激情小说在线视频| 国产操碰| 欧美色五月天| 久草婷婷在线| 99久热在线精品| 亚洲天堂99| 91男同| 五月婷婷av| 色播婷婷大香蕉| 五月草影视| 天天做天天爽| 99热香港| 五月激情婷婷综合| 影音先锋男士资源网一区| 色五月色五天色情网| 婷婷97色| 色婷婷五月天综合网| 99色色| 大香蕉婷婷丁香视频在线| 99九九精品| 丁香五月天激情四射网络不好| 26uuu另类| 久久99国产综合精品免费| 久久婷五月综合色| 99人妻碰碰久久久禁片| 亚洲综合婷婷五月| 婷婷情色五月|