久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4211|回復: 0
打印 上一主題 下一主題
收起左側(cè)

FPGA降低設(shè)計資源的技巧

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-11-1 15:32 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

我是一名FPGA設(shè)計領(lǐng)域的新手,有太多的不足和缺陷,需要花時間去一個一個地攻破他們。唯有這樣,也許在未來的某一天,我就成功了。

這幾天,我在搞設(shè)計時發(fā)現(xiàn)了幾種可以減少設(shè)計資源的技巧,現(xiàn)在把它們拿出來與大家分享,希望對大家在設(shè)計時有一定的幫助。*^_^*下面綜合的器件以Xilinx公司的Spartan6系列的xc6slx45-2fgg484為例。

一、加法計數(shù)器

這里以20000進制的加法計數(shù)器為例進行講解。

<1>通過判斷計數(shù)器cnt是否小于19999,若小于19999則每個時鐘加1,否則賦值為0,實現(xiàn)電路如程序清單1所示:

程序清單1

/********************************Copyright************************************
**                               CrazyBird 
**    
**
**-----------------------------File Infomation--------------------------------
** FileName     :       add_counter_1.v
** Author       :       CrazyBird
** Data         :       2015-10-31
** Version      :       v1.0
** Description  :       20000 decimal additive counter
**                      
*****************************************************************************/
// synopsys translate_off
`timescale 1 ns / 1 ps
// synopsys translate_on
module add_counter_1
#(
    parameter   T_COUNT = 20000
)
(
    input               rst_n,
    input               clk,
    output reg  [14:0]  cnt
);
//-----------------------------------------------
//  20000 decimal additive counter
always @(posedge clk or negedge rst_n)
begin
    if(rst_n==1'b0)
        cnt <= 15'd0;
    else if(cnt < T_COUNT-1'b1)
        cnt <= cnt + 1'b1;
    else
        cnt <= 15'd0;
end

endmodule
//********************************End File***********************************

綜合后資源消耗情況如圖1所示:

圖1 加法計數(shù)器在臨界條件cnt<19999下的資源消耗情況

<2>通過判斷計數(shù)器cnt是否等于19999,若等于19999則賦值為0,否則每個時鐘加1,實現(xiàn)電路如程序清單2所示:

程序清單2

/********************************Copyright**********************************
**                               CrazyBird 
**     
**
**----------------------------File Infomation-------------------------------
** FileName     :       add_counter_2.v
** Author       :       CrazyBird
** Data         :       2015-10-31
** Version      :       v1.0
** Description  :       20000 decimal additive counter
**                      
***************************************************************************/
// synopsys translate_off
`timescale 1 ns / 1 ps
// synopsys translate_on
module add_counter_2
#(
    parameter   T_COUNT = 20000
)
(
    input               rst_n,
    input               clk,
    output reg  [14:0]  cnt
);
//-----------------------------------------------
//  20000 decimal additive counter
always @(posedge clk or negedge rst_n)
begin
    if(rst_n==1'b0)
        cnt <= 15'd0;
    else if(cnt == T_COUNT)
        cnt <=15'd0;
    else
        cnt <= cnt + 1'b1;
end

endmodule
//*******************************End File**********************************

綜合后資源消耗情況如圖2所示:

圖2 加法計數(shù)器在臨界條件cnt==19999下的資源消耗情況

<3>總結(jié):一般情況下,加法計數(shù)器在臨界條件cnt小于T_COUNT下綜合消耗的資源要比在臨界條件cnt等于T_COUNT下要少。

二、將大的計數(shù)器適當分解為小的計數(shù)器

這里以時鐘為100MHz,每延時20ms產(chǎn)生一個時鐘周期的使能信號即計數(shù)2000000次為例。

<1>用一個計數(shù)器實現(xiàn),實現(xiàn)電路如程序清單3所示:

程序清單3

/*******************************Copyright**********************************
**                              CrazyBird 
**       
**
**---------------------------File Infomation-------------------------------
** FileName     :       large_counter.v
** Author       :       CrazyBird
** Data         :       2015-10-31
** Version      :       v1.0
** Description  :       Large counter to achieve 2000000 count
**                      
**************************************************************************/
// synopsys translate_off
`timescale 1 ns / 1 ps
// synopsys translate_on
module large_counter
#(
    parameter   T_COUNT = 2000000
)
(
    input           rst_n,
    input           clk,
    output          cnt_done
);
//-----------------------------------------
//  count 2000000 
reg     [20:0]      cnt;
always @(posedge clk or negedge rst_n)
begin
    if(rst_n == 1'b0)
        cnt <= 21'd0;
    else if(cnt < T_COUNT-1'b1)
        cnt <= cnt + 1'b1;
    else
        cnt <= 21'd0;
end
assign  cnt_done = (cnt == T_COUNT-1'b1);

endmodule
//******************************End File***********************************

綜合后資源消耗情況如圖3所示:

圖3 采用單個大的計數(shù)器消耗的資源情況

<2>用兩個小的計數(shù)器實現(xiàn),其中一個計數(shù)器cnt1計數(shù)2000,另一個計數(shù)器cnt2計數(shù)1000。每當cnt1完成一個周期的計數(shù),cnt2加1(嘿嘿,注意了,這里還可以運用第一種設(shè)計技巧來幫助減少資源消耗),實現(xiàn)電路如程序清單4所示:

程序清單4

/*******************************Copyright**********************************
**                              CrazyBird 
**    
**
**---------------------------File Infomation-------------------------------
** FileName     :       small_counter.v
** Author       :       CrazyBird
** Data         :       2015-10-31
** Version      :       v1.0
** Description  :       Small counter to achieve 2000000 count
**                      
**************************************************************************/
// synopsys translate_off
`timescale 1 ns / 1 ps
// synopsys translate_on
module small_counter
#(
    parameter   T_COUNT_1 = 2000,
    parameter   T_COUNT_2 = 1000
)
(
    input           rst_n,
    input           clk,
    output          cnt_done
);
//-----------------------------------------
//  count 2000 
reg     [10:0]      cnt1;
always @(posedge clk or negedge rst_n)
begin
    if(rst_n == 1'b0)
        cnt1 <= 11'd0;
    else if(cnt1 < T_COUNT_1-1'b1)
        cnt1 <= cnt1 + 1'b1;
    else
        cnt1 <= 11'd0;
end
wire    cnt1_done = (cnt1 == T_COUNT_1-1'b1);

//  count 1000
reg     [9:0]       cnt2;
always @(posedge clk or negedge rst_n)
begin
    if(rst_n == 1'b0)
        cnt2 <= 10'd0;
    else if(cnt2 < T_COUNT_2-1'b1)
        cnt2 <= cnt2 + 1'b1;
    else
        cnt2 <= 10'd0;
end
assign  cnt_done = (cnt2 == T_COUNT_2-1'b1);

endmodule
//******************************End File************************************

綜合后資源消耗情況如圖4所示:

圖4 適當分解為小的計數(shù)器消耗的資源情況

<3>總結(jié):一般情況下,將一個大的計數(shù)器適當分解為小的計數(shù)器可以減少資源的消耗。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产一区二区三区 | 欧美日韩在线免费 | 国产精品永久在线观看 | 亚洲www啪成人一区二区麻豆 | 在线播放亚洲 | 欧美一区视频 | 91精品国产一区二区三区动漫 | 九九久久精品 | 亚洲免费网址 | 日本超碰| 一级免费a| 成人黄色电影在线观看 | 欧美一级全黄 | 国产精品日韩高清伦字幕搜索 | 99国产精品视频免费观看一公开 | 欧美aaa级| 成人黄色电影在线观看 | 欧美一区二区三区四区五区无卡码 | 国精产品一区一区三区免费完 | 欧美久久久网站 | 久久精品二区亚洲w码 | 日韩一区二区三区在线 | 日本精品一区二区三区在线观看视频 | 一区二区三区视频在线 | 亚洲国产伊人 | 99精品国产一区二区青青牛奶 | 一区二区高清 | 国产精品一区久久久 | 欧州一区二区 | 精品日本久久久久久久久久 | 亚洲欧美激情精品一区二区 | h片在线播放 | 国产免费一区二区 | 在线观看成人小视频 | 91电影 | 国产精品一区久久久久 | 亚洲视频二 | 久久国产视频播放 | 91精品综合久久久久久五月天 | 四虎成人免费视频 | 亚洲国产欧美精品 |