少說廢話,多做實事。 微信訂閱號 不忘出芯

【每日一題】一起學Verilog

上一篇 / 下一篇  2018-12-30 17:29:28 / 個人分類: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定義為

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開發項目的經驗或教訓。


第2季即將開始
敬請關注

TAG:

 

評分:0

我來說兩句

顯示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

ic7x24

ic7x24

少說廢話,多做實事。記錄關于芯片設計的點點滴滴。同步更新微信訂閱號:不忘出芯,歡迎關注,共同討論學習。

我的欄目

日歷

« 2019-02-13  
     12
3456789
10111213141516
17181920212223
2425262728  

數據統計

  • 訪問量: 7632
  • 日志數: 8
  • 建立時間: 2018-04-03
  • 更新時間: 2018-12-30

RSS訂閱

Open Toolbar
幸运飞艇官网 魔域私服 热血江湖私服 魔域私服 幸运飞艇 魔域私服 魔域私服 天龙八部私服 魔域私服 魔域私服