讀書和實踐是學習Verilog的正確途徑

重要聲明

讀書和實踐是學習Verilog的正確途徑算法

本產品不能代替verilog的正規學習,同時可能有上網成癮、觀點誤導等反作用,請謹慎使用。微信

001.

畫出CMOS反相器的電路原理圖。異步

002.

反向器的速度與哪些因素有關?什麼是轉換時間(transition time)和傳播延遲(propagation delay)?函數

003.

解釋一下Vih,Vil,Vol,Voh,Vt。工具

004.

什麼是原碼,反碼,補碼,符號-數值碼。以4bit爲例,給出各自表示的數值範圍。學習

005.

十進制轉換爲二進制編碼:
127
-127
127.375
-127.375測試

006.

畫出CMOS三態緩衝器的電路原理圖,解釋一下高阻態。編碼

007.

什麼是open-drain output?設計

008.

只用2輸入mux,實現與,或,非,異或。2輸入mux定義爲code

o = s ? a : b;

009.

相同面積的cmos與非門和或非門哪一個更快?

010.

說明代碼中w1和 w2對應電路的具體區別:

wire [2:0] val; 
wire w1 = val > 0; 
wire w2 = val >= 0;

011.

什麼是競爭和冒險?

012.

設計1bit全加器,採用verilog描述並畫出門級電路圖。

013.

設計2-4譯碼器。採用verilog描述並畫出門級電路圖。

014.

設計BCD譯碼器,輸入0~9。採用verilog描述並畫出門級電路圖。

015.

用verilog設計8bit奇偶校驗電路。

016.

用verilog描述一個多路複用器,輸入的通道數目N,每一路的位寬爲M。

017.

用verilog實現 z = abs(x - y)
1) x和y是8bit無符號數
2) x和y是8bit有符號數(2補碼)

018.

用verilog實現取整函數(ceil、floor、round)。以5bit爲例,小數部分1位,取整後保留4bit。

wire [4:0] data; 
wire [3:0] data_ceil;
wire [3:0] data_floor; 
wire [3:0] data_round;

019.

用verilog實現乘法y = a * b
a和b都是8bit,考慮三種狀況:

1) 都是無符號數
2) 都是有符號數
3) a是有符號數,b是無符號數

020.

輸入一個8bit數,統計其中1的個數。

021.

求三個數的最大值:
y = max(a,b,c)

wire [3:0] a,b,c;

022.

畫一個D觸發器的電路圖。

023.

說明D觸發器與Latch的區別。

024.

解釋一下D觸發器的創建時間與保持時間。

025.

解釋一下Latch的創建時間與保持時間。

026.

用verilog實現1bit信號邊沿檢測功能,輸出一個週期寬度的脈衝信號。
1) 上升沿
2) 降低沿
3) 上升沿或者降低沿

input clk, rst_n, data; 
output data_edge;

027.

用verilog實現一個4bit二進制計數器。
1) 異步復位
2) 同步復位

input clk, rst_n; 
output [3:0] o_cnt;

028.

用verilog實現串並轉換。
1) lsb優先
2) msb優先

input clk, rst_n, data_i; 
output [7:0] data_o;

029.

序列檢測器:有「101」序列輸入時輸出爲1,其餘輸入狀況下,輸出爲0。畫出狀態轉移圖,並用verilog描述。

input clk, rst_n, data; 
output flag_101;

030.

用verilog實現兩路數據的乘法運算,要求只使用1個乘法器。

input clk, rst_n; 
input sel_x; 
input [7:0] da_x_y; 
input [7:0] db_x_y; 
output reg [15:0] dout_x_y;

031.

名詞解釋:

  • ROM

  • RAM

  • SRAM

  • DRAM

  • SDRAM

  • EEPROM

  • DDR

  • FLASH

032.

用verilog實現一個深度16,位寬8bit的ROM,初始值等於對應地址加上0xA0

moudule rom_16x8 ( 
... 
); 
... 
endmodule

033.

畫出SRAM bit cell結構圖。

034.

用verilog實現一個單端口sram,深度16,位寬8bit。支持片選,讀寫請求,要求代碼可綜合。

module spram_16x8 ( 
    input clk, 
    input [3:0] addr, 
    input [7:0] din, 
    output [7:0] dout, 
    ... 
); 
... 
endmodule

035.

用verilog實現一個同步雙端口sram,深度16,位寬8bit。A口讀出,B口寫入。支持片選,讀寫請求,要求代碼可綜合。

module dpram_16x8 (
    input clk, 
    input [3:0] addr_a, 
    output [7:0] dout_a, 
    input [7:0] din_b, 
    input [3:0] addr_b, 
    ... 
); 
... 
endmodule

036.

用verilog實現一個異步雙端口ram,深度16,位寬8bit。A口讀出,B口寫入。支持片選,讀寫請求,要求代碼可綜合。

module dpram_16x8 ( 
    input clk_a, 
    input [3:0] addr_a, 
    output [7:0] dout_a, 
    ...
    input clk_b, 
    input [7:0] din_b, 
    input [3:0] addr_b, 
    ... 
); 
... 
endmodule

037.

用verilog實現一個同步雙端口ram,深度16,位寬8bit。A口可讀可寫,B口可讀可寫。支持片選,讀寫請求,要求代碼可綜合。

module dpram_16x8 ( 
    input clk, 
    input [7:0] din_a, 
    input [3:0] addr_a, 
    output [7:0] dout_a, 
    ... 
    input [7:0] din_b, 
    output [7:0] dout_b, 
    input [3:0] addr_b, 
    ... 
); 
... 
endmodule

038.

用verilog實現一個3-tap低通FIR濾波器,輸入輸出爲8bit無符號數,濾波器係數[1/4 1/2 1/4]

module fir_lpf_3tap ( 
    input clk, 
    input rst_n, 
    input [7:0] din, 
    output [7:0] dout 
); 
...
endmodule

039.

用verilog實現一個3-tap低通FIR濾波器,輸入輸出爲8bit無符號數,濾波器係數[1/4 1/2 1/4],支持bypass功能:fir_bypass爲1時輸出原始數據。

module fir_lpf_3tap ( 
    input clk, 
    input rst_n, 
    input fir_bypass, 
    input [7:0] din, 
    output [7:0] dout 
); 
...
endmodule

040.

用verilog實現一個低通FIR濾波器,輸入輸出爲8bit無符號數,濾波器係數根據mode選擇:
mode 0:bypass
mode 1:[1 2 1]/4
mode 2:[1 2 2 2 1]/8
mode 3:[1 2 3 4 3 2 1]/16

module fir_lpf ( 
    input clk, 
    input rst_n, 
    input [1:0] mode, 
    input [7:0] din, 
    output [7:0] dout 
); 
...
endmodule

041.

用verilog實現一個參數化的FIR濾波器。可配置參數包括 1. 輸入輸出數據位寬N 2. 濾波器階數T 3. 濾波器係數位寬M (輸入數據與濾波器係數爲無符號數)

042.

用verilog實現一個3-tap低通FIR濾波器,Y通路輸入輸出爲8bit無符號數,濾波器係數[1/4 1/2 1/4]。C通路bypass輸出。

module fir_lpf_3tap_YC ( 
    input clk, 
    input rst_n, 
    input [7:0] yin, 
    output [7:0] yout, 
    input [7:0] cin, 
    output [7:0] cout 
); 
...
endmodule

043.

用verilog實現 y(n) = x(n) + x(n-1) + x(n-2) + x(n-3) + x(n-4)+ x(n-5)+ x(n-6)+ x(n-7) 輸入x是8bit無符號數。

044.

用verilog實現 y(n) = 0.75*x(n) + 0.25*y(n-1) x, y是8bit無符號數。

045.

用verilog實現二分頻。

046.

用verilog實現三分頻電路,要求輸出50%佔空比。

047.

畫出clock gating cell的原理圖。

048.

用verilog實現靜態時鐘切換電路。外部管腳輸入sel,clk,testclk。sel爲1輸出clk,sel爲0輸出testclk。

module clkmux_DONTCH ( 
    input sel, 
    input clk, 
    input testclk, 
    output clko 
); 
... 
endmodule

049.

用verilog實現glitch free時鐘切換電路。輸入sel,clka,clkb,sel爲1輸出clka,sel爲0輸出clkb。

050.

解釋一下亞穩態。

051.

用verilog實現異步復位同步釋放電路。

052.

用verilog實現異步復位同步釋放電路,支持測試模式的復位信號切換。

053.

用verilog實現4bit約翰遜(Johnson)計數器。

054.

用verilog實現4bit環形計數器:復位有效時輸出0001,復位釋放後依次輸出0010,0100,1000,0001,0010…

055.

用verilog實現按鍵抖動消除電路,抖動小於15ms,輸入時鐘12MHz。

056.

用verilog實現PWM控制呼吸燈。呼吸週期2秒:1秒逐漸變亮,1秒逐漸變暗。系統時鐘24MHz,pwm週期1ms,精度1us。

057.

在clk a時鐘域的一個單週期脈衝信號,如何正確的傳遞到clk b時鐘域? 要考慮clk a和b的各類不一樣頻率/相位的場景。

058.

用verilog實現一個同步FIFO,深度16,數據位寬8bit。

059.

用verilog實現一個異步FIFO,深度16,數據位寬8bit。

060.

用verilog實現一個異步FIFO,深度17,數據位寬8bit。

061.

FIFO深度計算: 寫入時鐘20MHz,讀出時鐘40MHz,每1000個時鐘週期寫入500個數據,每4個時鐘週期讀出1個數據,讀寫數據位寬一致。

062.

用verilog實現valid-ready握手協議。

module handshake_pipe ( 
    input clk, 
    input rst_n, 
    input valid_i, 
    output ready_o, 
    input din, 
    output valid_o, 
    input ready_i, 
    output dout 
); 
... 
endmodule

063.

用verilog實現支持valid-ready握手協議的下采樣電路:每輸入2個數據,輸出1個數據。

module handshake_pipe_ds ( 
    input clk, 
    input rst_n, 
    input valid_i, 
    output ready_o, 
    input din, 
    output valid_o, 
    input ready_i, 
    output dout 
); 
... 
endmodule

064.

用verilog實現支持valid-ready握手協議的上採樣電路:每輸入1個數據,輸出2個數據。約定clk頻率高於輸出數據速率。

module handshake_pipe_us ( 
    input clk, 
    input rst_n, 
    input valid_i, 
    output ready_o, 
    input [7:0] din, 
    output valid_o, 
    input ready_i, 
    output [7:0] dout 
); 
    ... 
endmodule

065.

用verilog實現支持valid-ready握手協議的分路電路:輸入1路數據,輸出2路數據。

module handshake_pipe_split ( 
    input clk, 
    input rst_n, 
    input valid_i, 
    output ready_o, 
    input [7:0] din, 
    output valid_1_o, 
    input ready_1_i, 
    output [7:0] dout_1, 
    output valid_0_o, 
    input ready_0_i, 
    output [7:0] dout_0 
); 
... 
endmodule

066.

用verilog實現支持valid-ready握手協議的合併電路:輸入2路數據,輸出1路數據。

module handshake_pipe_merge ( 
    input clk, 
    input rst_n, 
    input valid_0_i, 
    output ready_0_o, 
    input [7:0] din_0, 
    input valid_1_i, 
    output ready_1_o, 
    input [7:0] din_1, 
    output valid_o, 
    input ready_i, 
    output [15:0] dout 
); 
... 
endmodule

067.

解釋一下valid-ready握手傳輸中的bubble問題,如何解決?

068.

使用valid-ready多級流水時,ready信號通路上組合邏輯過長會帶來什麼問題?怎樣解決?

069.

用verilog實現配置寄存器接口。
地址0 :可讀可寫RW
地址1 :只讀RO
地址2 :只寫,自動清0
地址3 :保留

module blk_ctrl ( 
    input clk, 
    input rst_n, 
    input wr, 
    input [1:0] addr, 
    input [7:0] wdata, 
    input rd, 
    output [7:0] rdata 
); 
... 
endmodule

070.

解釋一下觸發器的setup和hold,在芯片使用中若是遇到時序問題,怎樣區分是setup仍是hold的問題?

071.

解釋一下multi cycle path

072.

用verilog實現16bit複數乘法器。

073.

把十進制數8.15轉換爲單精度浮點數。

074.

把十進制數-6.125轉換爲雙精度浮點數。

075.

用verilog實現32位浮點數加法。

076.

用verilog實現16位浮點乘法。

077.

解釋booth乘法器實現原理。(以radix 4爲例)

078.

用verilog實現4位超前進位加法器。

079.

用verilog實現8位桶形移位寄存器。

080.

用verilog實現一個深度爲16的CAM。

081.

用verilog實現8位無符號除法。

082.

用verilog實現8位定點數開平方。

083.

用verilog實現log2(x),輸入x爲16bit無符號數。

084.

設計1MHz正弦波發生器。

085.

用verilog實現三輸入round robin仲裁器。

086.

用verilog實現圖像行緩衝(line buffer),輸入數據Yi爲8bit,每行數據1920個,要求同時輸出3行,即當前數據Y0,延遲1行對應的數據Y1,延遲2行對應的數據Y2。

087.

用verilog實現圖像的二維濾波器。輸入輸出圖像分辨率1920x1080,8bit,YUV422。濾波器爲3*3,係數8bit有符號數。濾波操做只針對Y進行處理,UV直通。

088.

用verilog實現MAC單元:輸入32路數據A,32路數據B,都是8bit有符號數。輸出32路A乘以B的累加和。

089.

用verilog實現激活函數ReLU,輸入爲16bit有符號數。

090.

用verilog實現激活函數sigmoid:f(x) = 1/(1+e^-x),輸入x爲16bit有符號數。

091.

用verilog實現max pooling函數,kernel 7x7,數據16bit有符號數。

092.

用verilog實現排序算法。輸入數據爲128個16bit有符號數。

093.

用verilog實現一個APB接口的單口RAM,深度1024,位寬32bit。

094.

用verilog實現一個AHB接口的單口RAM,深度1024,位寬32bit。

095.

用verilog實現一個AXI接口的單口RAM,深度1024,位寬32bit。

096.

解釋一下DMA控制器的基本功能與實現。

097.

使用verilog開發項目須要用到哪些工具?

098.

使用verilog實現APB接口的I2C模塊,兼容標準協議。

099.

舉例說明3條使用verilog開發項目的經驗或教訓。

聲明:轉自微信公衆號。

相關文章
相關標籤/搜索