国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

比特對(duì)編碼的原理設(shè)計(jì)

FPGA之家 ? 來(lái)源:FPGA之家 ? 作者:FPGA之家 ? 2022-07-14 09:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

比特對(duì)編碼與比特對(duì)編碼乘法器的設(shè)計(jì)

今天一起看看比特對(duì)編碼(有的也把它稱(chēng)為基4booth編碼,名字不重要,主要是思想),可以解決上文中提到的問(wèn)題

比特對(duì)編碼原理

booth重編碼的主要問(wèn)題在于不能過(guò)濾掉010這樣序列。故考慮將通過(guò)連續(xù)相鄰兩位進(jìn)行編碼,每次從低位向高位移動(dòng)1位的方式(即booth比編碼),變成連續(xù)相鄰3位進(jìn)行編碼,每次從低位向高位移動(dòng)2位的方式(比特對(duì)編碼)。先討論其原理。

一個(gè)數(shù)我們考慮從低位向高位對(duì)其進(jìn)行編碼,使其變成4進(jìn)制(基4)的表示形式,每?jī)晌欢M(jìn)制表示一位的四進(jìn)制數(shù)。

3(2'b11)比4少1,2(2'b10)比4少2。在4進(jìn)制數(shù)中,2需要向前進(jìn)位則需要減去2再向前進(jìn)位;3需要向前進(jìn)位則需要減去1再向前進(jìn)位。

我們的比特對(duì)編碼就是基于上述原理來(lái)的。

下面給出比特對(duì)編碼規(guī)律,如下表和圖所示,圖為一個(gè)實(shí)例,是對(duì)1011_1111的編碼,其表示-65。比特對(duì)編碼結(jié)果為 -1 00-1,故其表示的十進(jìn)制d為:

d=-4^3 -4^0= -65

cd70b9ce-0310-11ed-ba43-dac502259ad0.png

cd85bd24-0310-11ed-ba43-dac502259ad0.png

再舉個(gè)例子,比如對(duì)0001_1001進(jìn)行比特對(duì)編碼,得到編碼為:

+2-2+1

故其表示的十進(jìn)制計(jì)算如下:

d=2*(4^2) -2*(4^1) +4^0

=32+8+1=41

其中的乘2與乘4都可以通過(guò)移位操作來(lái)實(shí)現(xiàn),這就是為什么需要這么編碼的原因。

可以看到,每相鄰三位進(jìn)行編碼,其中的最低位mi-1 其實(shí)表示來(lái)自前面的進(jìn)位。故當(dāng)其為 001時(shí),得到的編碼為 +1(表示4),011時(shí)最低位1表示進(jìn)位,故編碼為1+1=+2。

從中可以得出,對(duì)于8位二進(jìn)制數(shù)0101_0101,經(jīng)過(guò)比特對(duì)編碼后,得到的是 +1 +1 +1 +1,其表示的數(shù)為:

4^3 + 4^2 + 4^1 + 4^0 =

64+16+4+1=85

此時(shí)只需要進(jìn)行3次加法運(yùn)算,不會(huì)存在booth編碼所存在的問(wèn)題。

同時(shí)發(fā)現(xiàn)對(duì)于數(shù)據(jù)位寬非偶數(shù)的數(shù),我們需要將其在最高位補(bǔ)填一位符號(hào)位,再進(jìn)行比特對(duì)編碼。

比特對(duì)編碼(對(duì)乘數(shù)進(jìn)行編碼)乘法器,需要進(jìn)行的加法次數(shù)為乘數(shù)位寬的一半。

比特對(duì)編碼乘法器設(shè)計(jì)

設(shè)計(jì)思想概敘:定義位寬為DW_A+DW_B+2的product寄存器(DW_A為被乘數(shù)a的位寬,DW_B為乘數(shù)b的位寬)。當(dāng)in_valid與in_ready同時(shí)為高時(shí),將乘數(shù)b(位寬為b)加載到product的低DW_B位。然后在計(jì)算狀態(tài)下(executing),將每次加法器的輸出放到product的高位,并每個(gè)時(shí)鐘周期將product右移2位。每個(gè)時(shí)鐘周期,通過(guò)對(duì)

m={product[1:0],prd_r[1]}

(其中prd_r[1]為上一個(gè)時(shí)鐘product的第二位)進(jìn)行編碼,得出本次操作是加1、加2,減1,減2,還是不用做加減法(編碼為0)(代碼中上述五種操作對(duì)應(yīng)的標(biāo)志信號(hào)分別為add_1,add_2,sub_1,sub_2,noneed_add)。并將加法結(jié)果每次存到product寄存器的高位。

這里有個(gè)巧妙的思想就是,每個(gè)時(shí)鐘周期通過(guò)對(duì)product右移2位,再將其高DW_A位與a或者a*2進(jìn)行相加或者相減操作,正好相當(dāng)于每次product不動(dòng),把a(bǔ)或者a*2左移2位(乘以4)。這個(gè)思想源于《Verilog HDL 高級(jí)數(shù)字設(shè)計(jì)》中的精簡(jiǎn)寄存器時(shí)序乘法器設(shè)計(jì)。

注意,這里是有符號(hào)數(shù)乘法器,每次左移需要在高位補(bǔ)符號(hào)位,故左移不能簡(jiǎn)單的用 >> 描述(>>左移默認(rèn)高位填0),具體描述見(jiàn)代碼。

其中減法采用加上這個(gè)數(shù)的補(bǔ)碼的方式;通過(guò)一個(gè)計(jì)數(shù)器(cnt)來(lái)指示什么時(shí)候結(jié)束運(yùn)算;其中運(yùn)算控制狀態(tài)機(jī)采用《狀態(tài)機(jī)的第四種描述方式》編寫(xiě);條件選擇多采用與或方式實(shí)現(xiàn)。

設(shè)計(jì)Verilog如下(dff_with_en為寄存器):

module radix4_mul #(  parameter  DW_A = 16,  parameter  DW_B = 8)(   input  clk,   input  rst_n,
   input  in_valid,   output in_ready,   input  flush,
   output o_valid,   input o_ready,
   input [DW_A-1:0] a,   input [DW_B-1:0] b,
   output [DW_A+DW_B-1:0] mul_res);
//state machine for mulwire state;wire [$clog2((DW_B+1)/2):0] cnt;
wire exe_cnt_final = (cnt == (DW_B+1)/2);
wire execute_en = in_valid&in_ready;
localparam GET_DATA = 1'b0;localparam EXECUTING = 1'b1;
wire curr_get_data = (state == GET_DATA);wire curr_executing = (state == EXECUTING);
wire is_executing = curr_executing & (~exe_cnt_final);
wire nxt_get_data_en = (curr_executing & exe_cnt_final & o_ready) | flush;wire nxt_executing = curr_get_data & execute_en;
wire nxt_state = (nxt_get_data_en & GET_DATA) |            (nxt_executing & EXECUTING);
wire tran_en = nxt_get_data_en | nxt_executing;
dff_with_en #(   .DW(1))dff_state(   .clk (clk),   .rst_n (rst_n),   .enable (tran_en),   .d_in (nxt_state),   .q_out (state));
//cnt//wire [$clog2((DW_B+1)/2):0] cnt_nxt = curr_executing ? cnt+1 : 'h0;
dff_with_en #(   .DW($clog2((DW_B+1)/2)+1))dff_cnt(   .clk (clk),   .rst_n (rst_n),   .enable (1'b1),   .d_in (cnt_nxt),   .q_out (cnt));
//get the awire [DW_A-1:0] a_d;wire [DW_A-1:0] nxt_a_d = nxt_executing ? a : a_d;
dff_with_en #(   .DW(DW_A))dff_a(   .clk (clk),   .rst_n (rst_n),   .enable (1'b1),   .d_in (nxt_a_d),   .q_out (a_d));//radix 4 codingwire prd_r;wire [DW_A+DW_B+1:0] product;//wire [DW_B-1:0] b_shift;wire [2:0] m = is_executing ? {product[1:0],prd_r} : 3'b000;
wire add_1 = (m == 3'b001) | (m == 3'b010);wire add_2 = (m == 3'b011);wire sub_1 = (m == 3'b110) | (m == 3'b101);wire sub_2 = (m == 3'b100);
//wire [DW_A+DW_B+1:0] product;
wire [DW_A+1:0] adder_op1 = ( {DW_A+2{add_1}}& { {2{a_d[DW_A-1]}},a_d} )       |                      ( {DW_A+2{add_2}}& { {1{a_d[DW_A-1]}},a_d,1'b0} )  |          ( {DW_A+2{sub_1}}& (~{ {2{a_d[DW_A-1]}},a_d}) )    |          ( {DW_A+2{sub_2}}& (~{ {1{a_d[DW_A-1]}},a_d,1'b0}));
wire add_en = (add_1 | add_2 | sub_1 | sub_2)& is_executing;       wire noneed_add = is_executing & (~(add_1 | add_2 | sub_1 | sub_2));
wire [DW_A+1:0] adder_op2 = product[DW_A+DW_B+1:DW_B];
wire adder_cin = sub_1|sub_2;
wire [DW_A+1:0] adder_res = adder_op1 + adder_op2 + adder_cin;
wire [DW_A+DW_B+1:0] nxt_product = ({DW_A+DW_B+2{add_en}} &{{2{adder_res[DW_A+1]}},adder_res,product[DW_B-1:2]})|                              ({DW_A+DW_B+2{noneed_add}} & {{2{product[DW_A+DW_B+1]}},product[DW_A+DW_B+1:2]}) |           ({DW_A+DW_B+2{o_valid}} & product) |           ({DW_A+DW_B+2{nxt_executing}} & {{DW_A+2{1'b0}},b});
dff_with_en #(   .DW(DW_A+DW_B+2))dff_product(   .clk (clk),   .rst_n (rst_n),   .enable (1'b1),   .d_in (nxt_product),   .q_out (product));
wire prd_nxt = curr_get_data ? 1'b0 : product[1];
dff_with_en #(   .DW(1))dff_prd(   .clk (clk),   .rst_n (rst_n),   .enable (1'b1),   .d_in (prd_nxt),   .q_out (prd_r));assign in_ready = curr_get_data;assign o_valid = exe_cnt_final;assign mul_res = product[DW_A+DW_B-1:0];
endmodule

如果乘數(shù)b位寬為奇數(shù),請(qǐng)補(bǔ)一位符號(hào)位,變成偶數(shù)位寬,再輸入。

原文標(biāo)題:比特對(duì)編碼與比特對(duì)編碼乘法器的設(shè)計(jì)

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭靜

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    1039

    瀏覽量

    56964
  • 比特
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    10784
  • 乘法器
    +關(guān)注

    關(guān)注

    9

    文章

    221

    瀏覽量

    38803
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    風(fēng)華貼片電阻料號(hào)編碼的詳細(xì)解析

    風(fēng)華貼片電阻的料號(hào)編碼通常遵循一套系統(tǒng)化的命名規(guī)則,涵蓋了產(chǎn)品類(lèi)型、封裝尺寸、溫度系數(shù)、阻值、精度、額定功率及包裝方式等關(guān)鍵參數(shù)。以下是對(duì)風(fēng)華貼片電阻料號(hào)編碼的詳細(xì)解析: 一、編碼結(jié)構(gòu) 風(fēng)華貼片電阻
    的頭像 發(fā)表于 03-04 16:23 ?43次閱讀
    風(fēng)華貼片電阻料號(hào)<b class='flag-5'>編碼</b>的詳細(xì)解析

    hcs301 編碼跳變編碼器應(yīng)用手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《hcs301 編碼跳變編碼器應(yīng)用手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 02-09 16:35 ?0次下載

    Vishay USB編碼器接口技術(shù)解析與應(yīng)用指南

    Vishay/MCB Industrie RAMK/RAME USB編碼器接口是一款設(shè)計(jì)用于Vishay MCB編碼器(AMK和RAME系列,包括霍爾效應(yīng))的電子板。該接口板只需使用隨附的USB
    的頭像 發(fā)表于 11-12 11:51 ?853次閱讀

    舵機(jī)伺服編碼

    舵機(jī)伺服編碼器是用于實(shí)時(shí)檢測(cè)舵機(jī)輸出軸位置、速度或角度的核心反饋元件,它能將機(jī)械運(yùn)動(dòng)轉(zhuǎn)化為電信號(hào),讓控制系統(tǒng)實(shí)現(xiàn)對(duì)舵機(jī)的精準(zhǔn)閉環(huán)控制。 這個(gè)問(wèn)題切得很準(zhǔn),它直接指向了舵機(jī) “精準(zhǔn)控制” 的關(guān)鍵所在
    的頭像 發(fā)表于 10-30 10:05 ?314次閱讀

    編碼器為何能取代光電編碼器?

    在復(fù)雜工業(yè)場(chǎng)景下,磁編碼器憑借其不怕油污粉塵、抗沖擊振動(dòng)、安裝便捷及高速響應(yīng)等優(yōu)勢(shì),正有效解決光電編碼器怕臟、怕震、難安裝、怕高速的痛點(diǎn),逐漸成為提升機(jī)器人性能的新選擇。
    的頭像 發(fā)表于 10-15 09:55 ?656次閱讀
    磁<b class='flag-5'>編碼</b>器為何能取代光電<b class='flag-5'>編碼</b>器?

    Bourns發(fā)布全新增量式微型編碼

    Bourns 推出 PEC04 系列 4 mm 增量式微型編碼器、PEC05 PEC05 系列 5 mm 增量式微型編碼器,以及 PEC06 型號(hào) 6 mm 增量式微型編碼器。Bourns 全新微型
    的頭像 發(fā)表于 09-22 16:05 ?1296次閱讀

    《精準(zhǔn)量子比特控制和讀取》白皮書(shū)

    在上篇客戶(hù)案例中,我們分享了德國(guó)馬普高分子研究所團(tuán)隊(duì)如何利用NV色心構(gòu)建高靈敏度的磁力計(jì),案例展示了量子比特相干穩(wěn)定性在實(shí)驗(yàn)中的關(guān)鍵作用。要進(jìn)一步加深理解量子比特的基本與控制方法,我們推薦您閱讀
    的頭像 發(fā)表于 08-21 17:23 ?585次閱讀
    《精準(zhǔn)量子<b class='flag-5'>比特</b>控制和讀取》白皮書(shū)

    絕對(duì)值編碼器與增量式編碼器相比有哪些優(yōu)勢(shì)?

    絕對(duì)值編碼器與增量式編碼器相比有哪些優(yōu)勢(shì)?核心功能:斷電后位置信息不丟失,絕對(duì)值編碼器:通過(guò)機(jī)械結(jié)構(gòu)或電子存儲(chǔ)(如電池備份),能實(shí)時(shí)輸出當(dāng)前位置的唯一絕對(duì)值編碼(如二進(jìn)制、格雷碼)。無(wú)
    的頭像 發(fā)表于 08-11 13:57 ?1605次閱讀
    絕對(duì)值<b class='flag-5'>編碼</b>器與增量式<b class='flag-5'>編碼</b>器相比有哪些優(yōu)勢(shì)?

    增量型編碼器與絕對(duì)值型編碼器怎么選擇?

    在選擇增量型編碼器與絕對(duì)值型編碼器時(shí),需要考慮多個(gè)因素,包括應(yīng)用需求、成本、精度、可靠性以及環(huán)境適應(yīng)性等。以下是對(duì)兩種編碼器的詳細(xì)比較及選擇建議: 一、增量型編碼器 1. 優(yōu)點(diǎn): ?
    的頭像 發(fā)表于 07-10 10:34 ?1379次閱讀

    全球首個(gè)!低溫下可精準(zhǔn)控制“百萬(wàn)量級(jí)量子比特”芯片問(wèn)世

    發(fā)表于《自然》期刊,為實(shí)用化量子計(jì)算機(jī)的構(gòu)建開(kāi)辟了新路徑。 ? 研究團(tuán)隊(duì)研制的新型芯片基于自旋量子比特技術(shù),通過(guò)操控單個(gè)電子的磁方向編碼信息。這一技術(shù)路線(xiàn)具有兩大核心優(yōu)勢(shì):一是自旋量子比特與主流CMOS半導(dǎo)體工藝兼容,易于
    的頭像 發(fā)表于 07-07 05:58 ?3452次閱讀

    一文讀懂什么是磁性編碼

    磁性編碼器是一種用于測(cè)量角度和線(xiàn)性位置的傳感器。它使用磁性信號(hào)來(lái)監(jiān)測(cè)旋轉(zhuǎn)或線(xiàn)性位置的變化,并把這些變化轉(zhuǎn)換成數(shù)字信號(hào)。磁性編碼器可用于各種應(yīng)用中,比如機(jī)器人、汽車(chē)、數(shù)控機(jī)床等領(lǐng)域
    的頭像 發(fā)表于 04-27 17:18 ?1055次閱讀

    優(yōu)先編碼器:高效數(shù)據(jù)選擇與編碼的解決方案

    在現(xiàn)代數(shù)字電路設(shè)計(jì)中,數(shù)據(jù)的選擇與編碼是不可或缺的重要環(huán)節(jié)。面對(duì)眾多輸入信號(hào),如何高效地選擇并編碼所需數(shù)據(jù),成為設(shè)計(jì)師們面臨的一大挑戰(zhàn)。優(yōu)先編碼器,作為一種獨(dú)特的數(shù)字電路組件,憑借其高效、靈活的特點(diǎn)
    的頭像 發(fā)表于 03-25 08:33 ?1158次閱讀

    編碼器與無(wú)軸承編碼器,到底如何選擇?

    在選擇軸編碼器與無(wú)軸承編碼器時(shí),需要根據(jù)具體的應(yīng)用場(chǎng)景、性能需求、環(huán)境條件和成本預(yù)算等因素進(jìn)行綜合考慮。以下是對(duì)兩者的詳細(xì)對(duì)比,以幫助做出合適的選擇: 一、工作原理與結(jié)構(gòu) 1. 軸編碼
    的頭像 發(fā)表于 03-11 15:33 ?1300次閱讀
    軸<b class='flag-5'>編碼</b>器與無(wú)軸承<b class='flag-5'>編碼</b>器,到底如何選擇?

    伺服電機(jī)編碼器怎么選型

    伺服電機(jī)編碼器的選型是一個(gè)綜合性的過(guò)程,需要考慮多個(gè)因素以確保所選編碼器能夠滿(mǎn)足系統(tǒng)的性能要求。以下是一些關(guān)鍵的選型步驟和考慮因素: 一、明確應(yīng)用需求 首先,需要明確伺服電機(jī)編碼器的應(yīng)用需求,包括
    的頭像 發(fā)表于 03-11 12:01 ?2040次閱讀
    伺服電機(jī)<b class='flag-5'>編碼</b>器怎么選型

    編碼器常見(jiàn)的故障問(wèn)題及案例分析

    編碼器作為自動(dòng)化控制系統(tǒng)中的重要組件,負(fù)責(zé)將機(jī)械位移轉(zhuǎn)換為電信號(hào),以供上位機(jī)、PLC或驅(qū)動(dòng)器等設(shè)備讀取和處理。然而,在使用過(guò)程中,編碼器可能會(huì)遇到多種故障。以下是對(duì)編碼器常見(jiàn)故障及案例的詳細(xì)分析
    的頭像 發(fā)表于 03-07 11:05 ?4958次閱讀