hvor å tvinge syntheziser å holde et signal

A

Al Farouk

Guest
Jeg wrot en VHDL design og jeg må utsette et signal for visst antall klokker, jeg skriver koden for skift register og jeg brukte sin utgang.når jeg synthesuzed det jeg får en warining at signalet (declar shift-register) er ikke brukt og optimalisert.Hvordan kan jeg tvinge synthesizer å holde dette signalet som det er.

 
Hei,

Jeg surpised.Hvis du bruker den siste biten av skift registrere seg som en utgang, kan synthesizer holde Shift-register.
Sjekk din signal navn.sørg for å bruke et signal som en produksjon av designen.

 
Typiske eksempler på et skifte register beskrivelse i VHDL og Verilog:

- 4-bits seriell-in og seriell-out skift register
- CLK: in STD_LOGIC;
- DIN: i STD_LOGIC;
- DOUT: out STD_LOGIC;

signal REG: STD_LOGIC_VECTOR (3 downto 0);
begynne
prosess (CLK)
begynne
hvis CLK'event and CLK = '1 'da
REG <= DIN & REG (3 downto 1);
end if;
end process;
DOUT <= reg (0);

/ / 4-bits seriell-in og seriell-out skift register

modul shift_reg (DOUT, DIN, CLK);
output DOUT;
input DIN, CLK;
reg DOUT;
reg [3:0] REG;

alltid @ (posedge CLK) begin
REG = (DIN, REG [3:1]);
DOUT = REG [0];
slutt
endmodule

/ / Eksempel på fire-bit shift register
modul Shift_reg_01 (Data_in, Data_out, klokke, reset);
input Data_in, klokke, reset;
output Data_out;
reg [3:0] Data_reg;

tildele Data_out = Data_reg [0];

alltid @ (negedge restarte eller posedge klokke)
begynne
if (reset == 1'b0) Data_reg <= 4'b0;
else Data_reg <= (Data_in, Data_reg [3:1]);
slutt
endmodule

/ / Eksempel på skift register med "new_signal" dannet inni synkronisert blokk
modul shift_reg_02 (Data_in, klokke, restarte, sig_d, new_signal);
input Data_in, klokke, reset;
output sig_d, new_signal;
reg sig_a, sig_b, sig_c, sig_d, new_signal;

alltid @ (posedge restarte eller posedge klokke)
begynne
if (reset == 1'b1)
begynne
sig_a <= 0;
sig_b <= 0;
sig_c <= 0;
sig_d <= 0;
new_signal <= 1'b0;
slutt
ellers
begynne
sig_a <= Data_in;
sig_b <= sig_a;
sig_c <= sig_b;
sig_d <= sig_c;
new_signal <= (~ sig_a) & sig_b;
slutt
slutt
endmodule

/ / Eksempel på skift register med "new_signal" dannet utenfor synkronisert blokk som en kontinuerlig oppgave.
modul shift_reg_03 (Data_in, klokke, restarte, sig_d, new_signal);
input Data_in, klokke, reset;
output sig_d, new_signal;
reg sig_a, sig_b, sig_c, sig_d;

alltid @ (posedge restarte eller posedge klokke) begin
if (reset == 1'b1)
begynne
sig_a <= 1'b0;
sig_b <= 1'b0;
sig_c <= 1'b0;
sig_d <= 1'b0;
slutt
ellers
begynne
sig_a <= Data_in;
sig_b <= sig_a;
sig_c <= sig_b;
sig_d <= sig_c;
slutt
slutt

tildele new_signal = (~ sig_a) & sig_b;
endmodule

 
Jeg bruker Le (at) n (at) Rdo v2001_1a.32

Forresten jeg bruker hver etappe av skiftet register av oerforming eller drift mellom dem og til tross for at advarselen si at signalet (skift register) brukes ikke optimalisert.

 
Hvis du bruker synplifypro, er det veldig lett å gjøre det fra hjelp av synplify.

 

Welcome to EDABoard.com

Sponsor

Back
Top