ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2008-9-18 22:49
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
RTL: FREQUENCY COUNTER
いよいよ各ブロック内部のRTL設計を行う。



FIN入力は1/8プリスケーラーを経て5桁分の同期BCDカウンタのクロックとして供給される。

1/8プリスケーラーはCEがアサートされている場合のみ動作する。

同期BCDカウンタのキャリー出力はそれぞれ一つ上の桁の同期BCDカウンタのイネーブルに入力されキャリーが伝搬される。

RESETがアサートされると1/8プリスケーラーとその出力はリセットされる。

PRESETがアサートされると5桁の同期BCDカウンタに対する非同期データセットが行われる。設定されるデータはBCDで455の二の補数表現である。

LOADの立ち上がりエッジで現在の同期BCDカウンタ出力値で出力レジスタ値を更新する。

同期BCDアップカウンターをサブモジュールとして新たに作成しfcモジュールでインスタンス化して使用するようにした。

sbuc.v: 同期BCDアップカウンターモジュール

module sbuc
(
input clk, ci, preset,
input [WIDTH-1:0] data,
output reg [WIDTH-1:0] count,
output reg co
);

parameter WIDTH=4, LIMIT=4'h9;

always @ (posedge clk or posedge preset)
begin
if (preset)
count <= data;
else if (ci)
begin
if(count == LIMIT)
count <= {WIDTH{1'b0}};
else
count <= count + 1'b1;
end
end

always @ (count or ci)
begin
if(count == LIMIT && ci)
co <= 1'b1;
else
co <= 1'b0;
end

endmodule


fc.v: FREQUENCY COUNTERモジュールRTLインプリメンテーション

module fc(ac, fin, ce, reset, preset, load, fcounter);

// Input Port(s)
input ac, fin, ce, reset, preset, load;

// Output Port(s)
output reg [19:0] fcounter;

// Inout Port(s)

// Parameter Declaration(s)
parameter [19:0] iv=(~20'h455)+1'b1;
// Additional Module Item(s)

reg [4:0] ps_cnt;
wire [3:0] c1, c10, c100, c1000, c10000;
wire co1,co10,co100,co1000,co10000;

// Basic module instantiation
sbuc fc1(ps_cnt[4], 1'b1, preset, iv[3:0], c1, co1);
sbuc fc10(ps_cnt[4], co1, preset, iv[7:4], c10, co10);
sbuc fc100(ps_cnt[4], co10, preset, iv[11:8], c100, co100);
sbuc fc1000(ps_cnt[4], co100, preset, iv[15:12], c1000, co1000);
sbuc fc10000(ps_cnt[4], co1000, preset, iv[19:16], c10000, co10000);

always@(posedge fin or posedge reset or negedge ac)
begin
if(!ac || reset)
ps_cnt <= 0;
else if(fin && ce)
ps_cnt <= ps_cnt + 1'b1;
end

always@(posedge load or negedge ac)
begin
if(!ac)
fcounter <= 0;
else if(load)
fcounter <= {c10000, c1000, c100, c10, c1};
end

endmodule


これをコンパイルしてRTL Viewerで見るとだいたい期待していた通りのロジックが出来上がっている。


フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   Poorman's MSM5524 webadm 2008-8-12 11:11
     トップレベル webadm 2008-8-13 5:51
     FREQUENCY COUNTERブロック webadm 2008-8-14 20:05
     CLOCK DIVIDERブロック webadm 2008-9-8 10:54
     CONTROLブロック webadm 2008-9-14 23:10
     CLOCK TIMERブロック webadm 2008-9-16 5:20
     DISPLAYブロック webadm 2008-9-17 10:16
     RTLスケルトン入力 webadm 2008-9-18 13:18
   » RTL: FREQUENCY COUNTER webadm 2008-9-18 22:49
     RTL: CLOCK DIVIDER webadm 2008-9-19 5:14
     RTL: CONTROL webadm 2008-9-19 8:56
     RTL: CLOCK TIMER webadm 2008-9-22 10:27
     RTL: DISPLAY webadm 2008-9-23 8:56
     動作シミュレーション webadm 2008-9-24 3:36
       Re: 動作シミュレーション webadm 2008-9-24 5:08
         周波数カウンターモードのシミュレーション webadm 2008-9-24 5:41
           QuartusのState Machine Viewer webadm 2008-9-24 6:18
             どうやらバグではないようだ webadm 2008-9-24 7:17
             周波数カウント動作は出来た webadm 2008-9-24 9:10
               時計とタイマー関連 webadm 2008-9-25 20:06
     VFDドライバ回路 webadm 2008-9-26 7:47
       Re: VFDドライバ回路 webadm 2008-10-1 10:08
         Re: VFDドライバ回路 webadm 2008-10-5 23:29
           Re: VFDドライバ回路 webadm 2008-10-6 11:09
             Re: VFDドライバ回路 webadm 2011-2-23 0:50
     XILINX ISEでコンパイルしてみた webadm 2008-9-29 11:07
     CLOCK TIMERモジュール無しでコンパイルしてみた webadm 2008-10-5 11:56
       Re: CLOCK TIMERモジュール無しでコンパイルしてみた webadm 2008-10-5 12:37
     冬休みの課題にしよう webadm 2008-12-16 9:49
       主要部品が届いた webadm 2008-12-24 20:21
         OKI MSM5524RS入手 webadm 2011-1-4 22:55
           Re: OKI MSM5524RS入手 webadm 2011-1-10 5:06

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索