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發生變化,所以解碼電路簡單,同時也可以減少競爭冒險現象的發生。一開始看這個題的時候,想到的...