paano upang pilitin ang syntheziser upang mapanatili ang isang senyas

A

Al Farouk

Guest
Wrot ko ng VHDL disenyo at kailangan ko upang i-antala ng isang hudyat para sa tiyak na bilang ng mga clocks, isulat ko ang code para sa rehistro shift at ginamit ko ang output.kapag ako ay synthesuzed ito kumuha ako ng isang warining na ang mga senyas (declar ang shift register) ay hindi na ginagamit at optimize.Paano ako ng lakas ng synthesizer upang itago ang hudyat na ito ay.

 
Hi,

Ako surpised.Kung ikaw ay gumagamit ng huling piraso ng iyong paglilipat magparehistro bilang isang output, synthesizer ay maaaring panatilihin ang shift register.
Suriin ang iyong mga pangalan ng signal.siguraduhin na gamitin ang isang senyas bilang isang output ng iyong disenyo.

 
Mga karaniwang halimbawa ng isang paglalarawan ng paglilipat magparehistro sa VHDL at Verilog:

- 4-bit serial-in at serial-out paglilipat magrehistro
- CLK: sa STD_LOGIC;
- Din: sa STD_LOGIC;
- DOUT: out STD_LOGIC;

signal reg: STD_LOGIC_VECTOR (3 downto 0);
simulan
proseso (CLK)
simulan
kung CLK'event at CLK = '1 'at pagkatapos
Reg <= Din & reg (3 downto 1);
kung ang dulo;
dulo proseso;
DOUT <= reg (0);

/ / 4-bit serial-in at serial-out paglilipat magrehistro

module shift_reg (DOUT, Din, CLK);
output DOUT;
input Din, CLK;
reg DOUT;
reg [3:0] reg;

laging @ (posedge CLK) magsisimula
Reg = (Din, reg [3:1]);
DOUT = reg [0];
wakasan
endmodule

/ / Halimbawa ng apat-bit paglilipat magrehistro
module Shift_reg_01 (Data_in, Data_out, orasan, i-reset);
input Data_in, orasan, i-reset;
output Data_out;
reg [3:0] Data_reg;

magtalaga ng Data_out = Data_reg [0];

laging @ (negedge i-reset o posedge orasan)
simulan
kung (i-reset == 1'b0) Data_reg <= 4'b0;
sino pa ang paririto Data_reg <= (Data_in, Data_reg [3:1]);
wakasan
endmodule

/ / Halimbawa ng paglilipat magrehistro sa "new_signal" nabuo sa loob ng synchronize block
module shift_reg_02 (Data_in, orasan, i-reset, sig_d, new_signal);
input Data_in, orasan, i-reset;
output sig_d, new_signal;
reg sig_a, sig_b, sig_c, sig_d, new_signal;

laging @ (posedge i-reset o posedge orasan)
simulan
kung (i-reset == 1'b1)
simulan
sig_a <= 0;
sig_b <= 0;
sig_c <= 0;
sig_d <= 0;
new_signal <= 1'b0;
wakasan
kung hindi
simulan
sig_a <= Data_in;
sig_b <= sig_a;
sig_c <= sig_b;
sig_d <= sig_c;
new_signal <= (~ sig_a) & sig_b;
wakasan
wakasan
endmodule

/ / Halimbawa ng paglilipat magrehistro sa "new_signal" nabuo sa labas synchronize harangan ang bilang ng tuloy-tuloy assignment.
module shift_reg_03 (Data_in, orasan, i-reset, sig_d, new_signal);
input Data_in, orasan, i-reset;
output sig_d, new_signal;
reg sig_a, sig_b, sig_c, sig_d;

laging @ (posedge i-reset o posedge orasan) magsisimula
kung (i-reset == 1'b1)
simulan
sig_a <= 1'b0;
sig_b <= 1'b0;
sig_c <= 1'b0;
sig_d <= 1'b0;
wakasan
kung hindi
simulan
sig_a <= Data_in;
sig_b <= sig_a;
sig_c <= sig_b;
sig_d <= sig_c;
wakasan
wakasan

magtalaga ng new_signal = (~ sig_a) & sig_b;
endmodule

 
Gumagamit ako ng Le (sa) n (sa) rdo v2001_1a.32

Sa pamamagitan ng ang paraan ng gamitin ko ang bawat yugto ng magparehistro sa pamamagitan ng paglilipat oerforming O operasyon sa pagitan nila at sa kabila ng babala na ang sinasabi na ang mga senyas (shift register) ay hindi na ginagamit optimize.

 
Kung gumamit ka synplifypro, ito ay tunay madali sa gumawa ito mula sa tulong ng synplify.

 
Ipadala ang inyong code.Ito ay dapat maging mas madali ang check.

 

Welcome to EDABoard.com

Sponsor

Back
Top