Verilog_寻找最高有效位的位置
生活随笔
收集整理的這篇文章主要介紹了
Verilog_寻找最高有效位的位置
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
近來在校內(nèi)論壇上看到有位師兄面試海思的時候面試官問了個尋找最高有效位位置的問題,手癢試試看。
題:尋找一16bit無符號數(shù)最高bit位的位置
思:主要想法是輸出的時延要固定,時延不能跟著位置走。于是想到了二分法,這樣的話不論什么數(shù),找到結(jié)果的時延都是固定的,且吞吐率還高,每個時鐘周期都能吃數(shù),啟動間隔為1。
module top_valid(input clk,input rst,input [15:0] d_in,output reg [3:0] place );reg [7:0] d_temp_8;reg [3:0] d_temp_4;reg [1:0] d_temp_2;reg base_place_8,base_place_4,base_place_2;reg base_place_8_q1,base_place_8_q2;reg [7:0] d_temp_8_q1,d_temp_8_q2;reg [3:0] d_temp_4_q1;reg base_place_4_q1;wire top_eight;wire top_four;wire top_two;assign top_eight = |d_in[15:8];assign top_four = |d_temp_8[7:4];assign top_two = |d_temp_4[3:2];always @(posedge clk or posedge rst) beginif(rst == 1'b1) begind_temp_8 <= 'd0;base_place_8 <= 1'b0;endelse begind_temp_8 <= top_eight ? d_in[15:8] : d_in[7:0];base_place_8 <= top_eight ? 1'b1 : 1'b0;endendalways @(posedge clk or posedge rst) beginif(rst == 1'b1) begind_temp_4 <= 'd0;base_place_4 <= 1'b0;endelse begind_temp_4 <= top_four ? d_temp_8[7:4] : d_temp_8[3:0];base_place_4 <= top_four ? 1'b1 : 1'b0;endendalways @(posedge clk or posedge rst) beginif(rst == 1'b1) begind_temp_2 <= 'd0;base_place_2 <= 1'b0;endelse begind_temp_2 <= top_two ? d_temp_4[3:2] : d_temp_4[1:0];base_place_2 <= top_two ? 1'b1 : 1'b0;endendalways @(posedge clk or posedge rst) beginif(rst == 1'b1) beginbase_place_8_q1 <= 'b0;base_place_8_q2 <= 'b0;d_temp_8_q1 <= 'b0; d_temp_8_q2 <= 'b0; d_temp_4_q1 <= 'b0; base_place_4_q1 <= 'b0;endelse beginbase_place_8_q1 <= base_place_8;base_place_8_q2 <= base_place_8_q1;d_temp_8_q1 <= d_temp_8; d_temp_8_q2 <= d_temp_8_q1; d_temp_4_q1 <= d_temp_4; base_place_4_q1 <= base_place_4;endendalways @(posedge clk or posedge rst) beginif(rst == 1'b1) beginplace <= 'b0;endelse beginplace <= (base_place_8_q2 << 3) + (base_place_4_q1 << 2) + (base_place_2 << 1) + d_temp_2[1];endendendmodule測試結(jié)果如下,很完美
大家如果有什么其他想法歡迎在評論區(qū)交流。
總結(jié)
以上是生活随笔為你收集整理的Verilog_寻找最高有效位的位置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己动手写CPU(8)加载存储指令的实现
- 下一篇: 2023届IC实习小结