どのようにFPGAをBlock_ramでシフターを合成する?

M

Matrix_YL

Guest
ハワイのすべての
私は自分のチップでも多くのLUTを無駄だ!そこで私はblock_ramを使用する場合があるBlockRamザイリンクス社のFPGAのシフターを合成する方法はresource.Is!
どのように私のEDAツール(Synplify 7.5)を追加またはいくつかの属性が完全に設定する!

私のデバイスxcv50bg256 - 6。

VerilogやVHDL、必要なすべて最高です!

ありがとうございました!

 
463注:Appの27ページを参照してください:
http://www.xilinx.com/bvdocs/appnotes/xapp463.pdf


、 または1を作成するcoregenを使用することができます。現在のバージョンの"RAMベースシフトレジスタ8.0ベース"と呼ばれています。
http://www.xilinx.com/ipcenter/catalog/logicore/docs/ram_shift.pdf

 
////////////
モジュールshifter_main(質問、、C0を、にC1、C2、Cin、コート);
入力[7:0];
入力C0を、にC1、C2、Cin;
出力[7:0]問;
出力裁判所;
] S通常[1:0登録番号;
常に(C0を@またはC1またはC2)
場合(C0を)業S = 2'b00;
他の場合(C1)の業S = 2'b01;
他の場合(C2)を業S = 2'b10;
他の業S = 2'b11;
シフト回路(質問、S通常、、Cin、コート);
エンドモジュール

//////////////
モジュールBarrel_shifter_main(、C0を、にC1、C2、83、Q)は;
入力[7:0];
入力C0を、にC1、C2、83;
出力[7:0]問;
] S通常[2:0登録番号;
常に(C0を@またはC1またはC2あるいはC3)の
場合(C0を)業S = 3'b001;
他の場合(C1)の業S = 3'b011;
他の場合(C2)を業S = 3'b101;
他の場合(C3)の業S = 3'b111;
他の業S = 3'b000;
barrel_shifter shfter(aに、s、Q)は;
エンドモジュール
/ /

4x1マルチプレクサ
、 レベルシフタで使用するためのコード;
モジュールマルチプレクサ(ンd0を、d1を、はD2、D3、秒);
入力d3は、のd2、d1を、d0を;
入力[1:0]掲載;
出力y;
登録番号ン;
常に@(d0を
、 またはd1またはd2またはD3またはs)
1ケース(秒)
2'b00:ン= d0を;
2'b01:ン= d1を;
2'b10:ン=のd2;
2'b11:ン= d3の;
endcase
エンドモジュール
/ /
モジュールmux8x1(Ý、d0をd1を、はD2、D3、d4の、d5、D6と、d7、秒);
入力d0を、d1を、はD2、D3、d4の、d5、D6と、d7;
入力[2:0]掲載;
出力y;
登録番号ン;
常に@(d0を
、 またはd1またはd2またはD3またはD4またはd5またはD6とd7またはs)
1ケース(秒)
3'b000:ン= d0を;
3'b001:ン= d1を;
3'b010:ン=のd2;
3'b011:ン= d3の;
3'b100:ン= d4の;
3'b101:ン= d5;
3'b110:ン= D6の;
3'b111:ン= d7;
endcase
エンドモジュール

/ /

モジュールの移(質問、S通常、、Cin、コート);
入力[7:0];
入力[1:0] S通常;
入力Cin;
出力[7:0]問;
出力裁判所;
パラメータd = 1'b0;
登録番号裁判所;
マルチプレクサmux1(質問[7]、[7]、Cin、[6]、開発、S)を;
マルチプレクサmux2(質問[6]、[6] [7]、[5]、開発、S)を;
マルチプレクサmux3(質問[5]、[5] [6]、[4]、開発、S)を;
マルチプレクサmux4(質問[4]、[4] [5]、[3]、開発、S)を;
マルチプレクサmux5(質問[3]、[3] [4]、[2]、開発、S)を;
マルチプレクサmux6(質問[2]、[2] [3]、[1]、開発、S)を;
マルチプレクサmux7(質問[1]、[1]、[2]、[0]、開発、S)を;
マルチプレクサmux8(質問[0]、[0]、[1]、Cin、開発、S)を;
(またはS)は
、 常に@
ケース(S)を
2'b00:コート= 0;
2'b01:コート= [0];
2'b10:コート= [7];
2'b11:コート= 0;
endcase
endmodule
/ // /回転のためのコード;
モジュールbarrel_shifter(aに、s、Q)は;
入力[7:0];
入力[2:0] S通常;
出力[7:0]問;
パラメータd = 1'b0;
mux8x1 mux0(質問[7]、開発、[6]、[5]、[4]、[3]、[2]、[1]、[0]、S)を;
mux8x1 mux1(質問[6]開発、[5]、[4]、[3]、[2]、[1]、[0]、[7]、S)を;mux8x1 mux2(質問[5]、開発、[4]、[3]、[2]、[1]、[0]、[7]、[6]、S)を;
mux8x1 mux3(質問[4]、開発、[3]、[2]、[1]、[0]、[7]、[6]、[5]、S)を;
mux8x1 mux4(質問[3]、開発、[2]、[1]、[0]、[7]、[6]、[5]、[4]、S)を;
mux8x1 mux5(質問[2]、開発、[1]、[0]、[7]、[6]、[5]、[4]、[3]、S)を;
mux8x1 mux6(質問[1]、開発、[0]、[7]、[6]、[5]、[4]、[3]、[2]、S)を;
mux8x1 mux7(質問[0]、開発、[7]、[6]、[5]、[4]、[3]、[2]、[1]、S)を;
endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top