hvordan å syntetisere en shifter i FPGA Block_ram?

M

Matrix_YL

Guest
Hei alle
Jeg sløser for mye LUTS i brikken min!så jeg vil bruke min block_ram resource.Is det noen måter å syntetisere en shifter i BlockRam av XILINX's FPGA!
hvordan sette meg EDA verktøy (7,5) Synplify eller legge noen attributter for å fullføre det!

enheten min xcv50bg256-6.

Verilog and VHDL er alle best trengs!

takk!

 
Se side 27 av App Note 463:
http://www.xilinx.com/bvdocs/appnotes/xapp463.pdf

Eller du kan bruke coregen å opprette en.Den gjeldende versjonen kalles "RAM-baserte Shift Register 8.0".
http://www.xilinx.com/ipcenter/catalog/logicore/docs/ram_shift.pdf

 
////////////
modul shifter_main (Q, A, C0, C1, C2, Cin, Court);
input [7:0] A;
input C0, C1, C2, Cin;
output [7:0] Q;
output Court;
reg [1:0] S;
alltid @ (C0 eller C1 og C2)
if (C0) S = 2'b00;
else if (C1) S = 2'b01;
else if (K2) S = 2'b10;
else S = 2'b11;
shifter CCT (Q, S, A, Cin, Court);
end modul

//////////////
modul Barrel_shifter_main (A, C0, C1, C2, C3, Q);
input [7:0] A;
input C0, C1, C2, C3;
output [7:0] Q;
reg [2:0] S;
alltid @ (C0 eller C1 og C2 og C3)
if (C0) S = 3'b001;
else if (C1) S = 3'b011;
else if (K2) S = 3'b101;
else if (C3) S = 3'b111;
else S = 3'b000;
barrel_shifter shfter (A, S, Q);
end modul
/ /

Koden for 4x1 MUX brukes i Shifter;
modul MUX (y, d0, d1, d2, d3, s);
input d3, d2, d1, d0;
input [1:0] s;
output y;
reg y;
alltid @ (d0 eller D1 eller d2 eller d3 eller s)
case (s)
2'b00: y = D0;
2'b01: y = d1;
2'b10: y = D2;
2'b11: y = d3;
endcase
end modul
/ /
modul mux8x1 (y, d0, d1, d2, d3, d4, d5, d6, d7, s);
input d0, d1, d2, d3, d4, d5, d6, d7;
input [2:0] s;
output y;
reg y;
alltid @ (d0 eller D1 eller d2 eller d3 eller D4 og D5 eller d6 eller d7 eller s)
case (s)
3'b000: y = D0;
3'b001: y = d1;
3'b010: y = D2;
3'b011: y = d3;
3'b100: y = D4;
3'b101: y = D5;
3'b110: y = D6;
3'b111: y = D7;
endcase
end modul

/ /

modul shifter (Q, S, A, Cin, Court);
input [7:0] A;
input [1:0] S;
input Cin;
output [7:0] Q;
output Court;
parameteren d = 1'b0;
reg Court;
MUX mux1 (Q [7], A [7], Cin, A [6], d, S);
MUX mux2 (Q [6], A [6], A [7], A [5], d, S);
MUX mux3 (Q [5], A [5], A [6], A [4], d, S);
MUX mux4 (Q [4], A [4], A [5], A [3], d, S);
MUX mux5 (Q [3], A [3], A [4], A [2], d, S);
MUX mux6 (Q [2], A [2], A [3], A [1], d, S);
MUX mux7 (Q [1], A [1], A [2], A [0], d, S);
MUX mux8 (Q [0], A [0], A [1], Cin, d, S);
alltid @ (A eller S)
case (S)
2'b00: Court = 0;
2'b01: Court = A [0];
2'b10: Court = A [7];
2'b11: Court = 0;
endcase
endmodule
/ // / Koden for rotator;
modul barrel_shifter (A, S, Q);
input [7:0] A;
input [2:0] S;
output [7:0] Q;
parameteren d = 1'b0;
mux8x1 mux0 (Q [7], d, A [6], A [5], A [4], A [3], A [2], A [1], A [0], S);
mux8x1 mux1 (Q [6], d, A [5], A [4], A [3], A [2], A [1], A [0], A [7], S);mux8x1 mux2 (Q [5], d, a [4], A [3], A [2], A [1], A [0], A [7], A [6], S);
mux8x1 mux3 (Q [4], d, A [3], A [2], A [1], A [0], A [7], A [6], A [5], S);
mux8x1 mux4 (Q [3], d, A [2], A [1], A [0], A [7], A [6], A [5], A [4], S);
mux8x1 mux5 (Q [2], d, A [1], A [0], A [7], A [6], A [5], A [4], A [3], S);
mux8x1 mux6 (Q [1], d, A [0], A [7], A [6], A [5], A [4], A [3], A [2], S);
mux8x1 mux7 (Q [0], d, A [7], A [6], A [5], A [4], A [3], A [2], A [1], S);
endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top