hvordan man kan syntetisere en shifter i FPGA Block_ram?

M

Matrix_YL

Guest
Hej alle
Jeg spilde for meget LUTS i min chip!så jeg vil bruge min block_ram resource.Is der nogen måder at syntetisere en shifter i BlockRam af XILINX's FPGA!
hvordan indstille min EDA-værktøjer (Synplify 7.5) eller tilføje nogle attributter til at fuldføre det!

min enhed xcv50bg256-6.

verilog og vhdl er alle nødvendige bedste!

tak!

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

Eller du kan bruge coregen at oprette en.Den aktuelle version hedder "RAM-baseret Shift Register 8.0".
http://www.xilinx.com/ipcenter/catalog/logicore/docs/ram_shift.pdf

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

//////////////
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;
altid @ (C0 eller C1 og C2 og C3)
if (C0) S = 3'b001;
else if (C1) S = 3'b011;
else if (C2) S = 3'b101;
else if (C3) S = 3'b111;
else S = 3'b000;
barrel_shifter shfter (A, S, Q);
end module
/ /

Koden for den 4x1 MUX, der anvendes i Shifter;
modul MUX (y, D0, D1, D2, D3, s);
indgang D3, D2, d1, d0;
input [1:0] s;
output y;
reg y;
altid @ (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 module
/ /
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;
altid @ (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 module

/ /

modul shifter (Q, S, A, Cin, Domstolen);
input [7:0] A;
input [1:0] S;
input Cin;
output [7:0] Q;
output Court;
parameter 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);
altid @ (A eller S)
sag (S)
2'b00: Retten = 0;
2'b01: Retten = A [0];
2'b10: Retten = A [7];
2'b11: Retten = 0;
endcase
endmodule
/ // / Koden for rotator;
modul barrel_shifter (A, S, Q);
input [7:0] A;
input [2:0] S;
output [7:0] Q;
parameter 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