verilog程式設計題 取對數

2021-10-25 12:15:55 字數 1525 閱讀 7610

3. **

4. 小結

寫乙個組合邏輯**,可以直接輸出以2為底的對數值,向上取整。

這個**主要是用來熟悉for迴圈的使用,取以2為底的對數,通過右移實現。

module log

( input wire [31:

0] in,

//input wire clk,

//input wire rst_n,

output wire [7:

0] out );

// 方案一

function integer clogb2 (input integer bit_depth)

;begin

for(clogb2=

0; bit_depth>

0; clogb2=clogb2+1)

bit_depth = bit_depth>>1;

endendfunction

assign out =

clogb2

(in-

1'b1)

;// 方案二

integer i;

reg [31:

0] bit_reg;

integer bit_tmp;

always @(

*) begin

bit_reg = in-

1'b1;

for(i=

0; bit_reg >

0; i=i+

1) begin

bit_reg = bit_reg >>

1'b1;

endenendmodule : log

module tb_log()

; reg [31:

0] in;

reg clk, rst_n;

wire [7:

0] out;

initial begin

in = 'd4;

#20in = 'd8;

#20in = 'd16;

#20in = 'd32;

#20in = 'd10;

#20in = 'd17;

#2000

$finish;

endlog dut

( in,

out);

initial begin

$fsdbdumpfile

("tb_log.fsdb");

$fsdbdumpvars(0

, tb_log)

; $fsdbdumpon;

endendmodule : tb_log

通過方案二我們可以發現,在組合邏輯當中for迴圈的先後是可以有一定的先後順序的,並不是像generate for一樣,直接並行展開,這也許和採用阻塞賦值有一定的關係,如果方案二採用非阻塞賦值,可能for迴圈不能結束。方案一則需要注意function的使用,至少有乙個輸入,但是沒有輸出;不能包含always語句和時間控制語句;可以有返回值。

python程式設計題 質數對數

給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸 入值小於1000。如,輸入為10,程式應該輸出結果為2。共有兩對質數的和為10,分別 為 5,5 3,7 輸入描述 輸入包括乙個整數n,3 n 1000 輸出描述 輸出對數 示例1 輸入 10 輸出 2 判斷是否質數 ...

程式設計題 取近似值

talk is cheap,show me the code.寫出乙個程式,接受乙個正浮點數值,輸出該數值的近似整數值。如果小數點後數值大於等於5,向上取整 小於5,則向下取整。輸入描述 輸入乙個正浮點數值 輸出描述 輸出該數值的近似整數值 輸入例子 5.5 輸出例子 這道題比較簡單,但是實現方式也...

verilog程式設計題 詹森計數器

小結 詹森 扭環形 計數器是基於移位暫存器的計數器,用n個暫存器表示2n個狀態,請設計乙個4位詹森計數器,和格雷碼有點類似,相鄰兩個狀態之間只有1bit是不同的。詹森計數器由於相鄰兩個狀態跳轉的時候只有1bit發生變化,所以解碼電路簡單,同時也可以減少競爭冒險現象的發生。一開始看這個題的時候,想到的...