国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

零基礎(chǔ)學(xué)FPGA(九)手把手解析時序邏輯乘法器代碼

發(fā)布時間:2015-1-14 15:01    發(fā)布者:wp1981
關(guān)鍵詞: 零基礎(chǔ) , FPGA , 時序邏輯 , 乘法器
作者:小墨同學(xué)

      上次看了一下關(guān)于乘法器的Verilog代碼,有幾個地方一直很迷惑,相信很多初學(xué)者看這段代碼一定跟我當(dāng)初一樣,看得一頭霧水,在網(wǎng)上也有一些網(wǎng)友提問,說這段代碼不好理解,今天小墨同學(xué)就和大家一起來看一下這段代碼,我會親自在草稿紙上演算,盡量把過程寫的詳細(xì)些,讓更多的人了解乘法器的設(shè)計思路。

下面是一段16位乘法器的代碼,大家可以先瀏覽一下,之后我再做詳細(xì)解釋

module mux16(
clk,rst_n,
start,ain,bin,yout,done
);

input clk; //芯片的時鐘信號。
input rst_n; //低電平復(fù)位、清零信號。定義為0表示芯片復(fù)位;定義為1表示復(fù)位信號無效。
input start; //芯片使能信號。定義為0表示信號無效;定義為1表示芯片讀入輸入管腳得乘數(shù)和被乘數(shù),并將乘積復(fù)位清零。
input[15:0] ain; //輸入a(被乘數(shù)),其數(shù)據(jù)位寬為16bit.
input[15:0] bin; //輸入b(乘數(shù)),其數(shù)據(jù)位寬為16bit.
output[31:0] yout; //乘積輸出,其數(shù)據(jù)位寬為32bit.
output done; //芯片輸出標(biāo)志信號。定義為1表示乘法運算完成.

reg[15:0] areg; //乘數(shù)a寄存器
reg[15:0] breg; //乘數(shù)b寄存器
reg[31:0] yout_r; //乘積寄存器
reg done_r;
reg[4:0] i; //移位次數(shù)寄存器

//------------------------------------------------
//數(shù)據(jù)位控制
always @(posedge clk or negedge rst_n)
if(!rst_n) i <= 5'd0;
else if(start && i < 5'd17) i <= i+1'b1;
else if(!start) i <= 5'd0;

//------------------------------------------------
//乘法運算完成標(biāo)志信號產(chǎn)生
always @(posedge clk or negedge rst_n)
if(!rst_n) done_r <= 1'b0;
else if(i == 5'd16) done_r <= 1'b1; //乘法運算完成標(biāo)志
else if(i == 5'd17) done_r <= 1'b0; //標(biāo)志位撤銷

assign done = done_r;

//------------------------------------------------
//專用寄存器進(jìn)行移位累加運算
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
areg <= 16'h0000;
breg <= 16'h0000;
yout_r <= 32'h00000000;
end
else if(start) begin //啟動運算
if(i == 5'd0) begin //鎖存乘數(shù)、被乘數(shù)
areg <= ain;
breg <= bin;
end
else if(i > 5'd0 && i < 5'd16) begin
if(areg[i-1]) yout_r = {1'b0,yout[30:15]+breg,yout_r[14:1]}; //累加并移位
else yout_r <= yout_r>>1; //移位不累加
end
else if(i == 5'd16 && areg[15]) yout_r[31:16] <= yout_r[31:16]+breg; //累加不移位
end
end

assign yout = yout_r;

endmodule

下面是小墨同學(xué)對這段代碼的理解


   要理解這段代碼,首先要弄明白幾個點。
1、我們通常寫的十進(jìn)制的乘法豎式,同樣適用于二進(jìn)制。下面我們就以這個算式為例:1011 x 0111 =0100_1101。
2、兩個16位的數(shù)相乘,結(jié)果是32位的,沒有32位要在高位補零。
3、計算兩個16位的數(shù)相乘需要移位15次。例如:
                         1 0 1 1
               x        0 1 1 1
----------------------------------------
                         1 0 1 1
                      1 0 1 1
                   1 0 1 1
                0 0 0 0
-------------------------------------------
                1 0 0 1 1 0 1
前三次計算是移位的,最后一次沒有移位
4、兩個16位的數(shù)相加,結(jié)果是17位的,不夠17位最高位補零。 例如語句yout[30:15]+breg,結(jié)果是17位的。

知道了這些,我們就開始看代碼了

1、接口部分注釋寫的很清楚,這里就不提了

2、數(shù)據(jù)位控制部分

always @(posedge clk or negedge rst_n)
if(!rst_n) i <= 5'd0;
else if(start && i < 5'd17) i <= i+1'b1;
else if(!start) i <= 5'd0;
當(dāng)start為1時,芯片讀入兩個數(shù),此時開始計數(shù),計數(shù)16次,乘法運算開始

3、乘法運算完成標(biāo)志信號產(chǎn)生
always @(posedge clk or negedge rst_n)
if(!rst_n) done_r <= 1'b0;
else if(i == 5'd16) done_r <= 1'b1; //乘法運算完成標(biāo)志
else if(i == 5'd17) done_r <= 1'b0; //標(biāo)志位撤銷

assign done = done_r;
這部分也很好理解
4、專用寄存器進(jìn)行移位累加運算
這里為了簡單,就用15到18位代替15到30位







以上部分是最主要的計算部分,其他地方相對來說還比較簡單,例如當(dāng)乘數(shù)某一位為0時,不用累加,直接右移,當(dāng)i計數(shù)到16時,此時就不用再移位了,可以直接用位數(shù)表示,直接累加即可。

下面是仿真



本文地址:http://m.qingdxww.cn/thread-144622-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜影库| 天天se天天cao综合网蜜芽| 日韩亚洲不卡在线视频| 久草国产在线播放| 色怕怕| 中文字幕日本一区| 天天干天天射天天操| 狍和美女一级aa毛片| 婷婷丁香五| 四虎免费影院ww4164h| 再猛点深使劲爽免费视频| 哺乳期妇女挤奶水36d| 久久欧洲视频| 亚洲欧美国产视频| 特a级黄色片| 四虎院影永久在线观看| 视频一区国产| 一级片小视频| 国产精品自在在线午夜蜜芽tv在线 | 亚洲香蕉在线观看| 丹麦1o一19sex性hdhd| 日本一卡二卡三卡四卡无卡免费播放| 日韩一级黄色片| 亚洲高清在线看| 四只虎免费永久观看地址| 色中色官网| 在线看免费涩涩视频网| 含羞草完整视频在线播放免费| 无码精品AV久久久奶水| 日本黄色小视频在线观看| 欧美一级片播放| 天天做天天爽爽快快| 亚洲综合在线播放| 国产亚洲精品久久久久| 午夜向日葵视频在线观看| 亚洲最新在线| 日韩欧美亚洲综合久久影院d3| 伊人网在线播放| 伊人久久精品线影院| 国产日韩欧美三级| 亚洲精品另类有吗中文字幕|