comment synthétiser un levier de vitesses en FPGA Block_ram?

Voir page 27 du App Note 463:
http://www.xilinx.com/bvdocs/appnotes/xapp463.pdf

Ou vous pouvez utiliser coregen en créer un.La version courante est appelée "RAM-based registre à décalage de 8,0".
http://www.xilinx.com/ipcenter/catalog/logicore/docs/ram_shift.pdf

 
////////////
module shifter_main (Q, A, C0, C1, C2, Cin, Cour);
input [7:0] A;
entrée C0, C1, C2, CIN;
sortie [7:0] Q;
Sortie Cour;
reg [1:0] S;
always @ (C0 ou C1 ou C2)
if (C0) S = 2'b00;
else if (C1) S = 2'b01;
else if (C2) S = 2'b10;
sinon S = 2'b11;
shifter cct (Q, S, A, Cin, Cour);
End Module

//////////////
module Barrel_shifter_main (A, C0, C1, C2, C3, Q);
input [7:0] A;
entrée C0, C1, C2, C3;
sortie [7:0] Q;
reg [2:0] S;
always @ (C0 ou C1 ou C2 ou C3)
if (C0) S = 3'b001;
else if (C1) S = 3'b011;
else if (C2) S = 3'b101;
else if (C3) S = 3'b111;
sinon S = 3'b000;
barrel_shifter shfter (A, S, Q);
End Module
/ /

Le code de l'MUX 4x1 utilisés dans le levier de vitesses;
mux module (y, D0, D1, D2, D3, s);
entrée D3, D2, D1, D0;
input [1:0] s;
sortie y;
reg y;
always @ (D0 ou D1 ou D2 ou D3 ou s)
case (s)
2'b00: y = D0;
2'b01: y = d1;
2'b10: y = d2;
2'b11: y = d3;
ENDCASE
End Module
/ /
module mux8x1 (y, D0, D1, D2, D3, D4, D5, D6, D7, s);
d'entrée D0, D1, D2, D3, D4, D5, D6, D7;
input [2:0] s;
sortie y;
reg y;
always @ (D0 ou D1 ou D2 ou D3 ou D4 ou D5 ou D6 ou D7 ou 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

/ /

module de levier de vitesses (Q, S, A, Cin, Cour);
input [7:0] A;
input [1:0] S;
Cin d'entrée;
sortie [7:0] Q;
Sortie Cour;
paramètre d = 1'b0;
reg Cour;
mux MUX1 (Q [7], [7], Cin, A [6], D, S);
mux MUX2 (Q [6], A [6], a [7], [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);
always @ (A ou S)
(cas S)
2'b00: Cour = 0;
2'b01: Cour = A [0];
2'b10: Cour = A [7];
2'b11: Cour = 0;
ENDCASE
endmodule
/ // / Le code de la coiffe;
module barrel_shifter (A, S, Q);
input [7:0] A;
input [2:0] S;
sortie [7:0] Q;
paramètre 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], [6], S);
mux8x1 mux3 (Q [4], D, A [3], A [2], A [1], a [0], A [7], [6], A [5], S);
mux8x1 mux4 (Q [3], D, A [2], a [1], a [0], a [7], [6], A [5], a [4], S);
mux8x1 mux5 (Q [2], D, A [1], a [0], A [7], [6], A [5], a [4], A [3], S);
mux8x1 mux6 (Q [1], D, A [0], A [7], [6], A [5], a [4], A [3], A [2], S);
mux8x1 mux7 (Q [0], D, A [7], [6], A [5], a [4], A [3], A [2], a [1], S);
endmodule

 
M

Matrix_YL

Guest
HI all
Je perds TUBA trop dans ma puce!donc je veux utiliser mon block_ram resource.Is-il des moyens pour synthétiser une manette BlockRam de FPGA de Xilinx!
Comment définir mes outils de CAO (Synplify 7.5) ou ajouter des attributs à la compléter!

mon appareil xcv50bg256-6.

VHDL et Verilog sont tous les meilleurs needed!

merci!

 

Welcome to EDABoard.com

Sponsor

Back
Top