cara memaksa syntheziser untuk menjaga sinyal

A

Al Farouk

Guest
Aku wrot sebuah desain VHDL dan saya perlu menunda sinyal untuk jumlah jam tertentu, saya menulis kode untuk register geser dan aku menggunakan outputnya.ketika aku synthesuzed itu aku mendapatkan warining bahwa sinyal (declar register geser) tidak digunakan dan dioptimalkan.Bagaimana saya bisa memaksa synthesizer untuk menjaga sinyal ini sebagaimana adanya.

 
Hai,

Aku surpised.Jika Anda menggunakan sedikit terakhir Anda register geser sebagai output, synthesizer dapat menjaga register geser.
Periksa nama sinyal.pastikan untuk menggunakan sinyal sebagai hasil dari desain Anda.

 
Contoh-contoh khas sebuah register geser deskripsi dalam VHDL dan Verilog:

- 4-bit serial-dalam dan serial-out register geser
- CLK: di STD_LOGIC;
- DIN: di STD_LOGIC;
- DOUT: keluar STD_LOGIC;

sinyal REG: STD_LOGIC_VECTOR (3 downto 0);
mulai
proses (CLK)
mulai
jika CLK'event dan CLK = '1 'lalu
REG <= DIN & REG (3 downto 1);
end if;
proses akhir;
DOUT <= REG (0);

/ / 4-bit serial-dalam dan serial-out register geser

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

selalu @ (posedge CLK) mulai
REG = (DIN, REG [3:1]);
DOUT = REG [0];
akhir
endmodule

/ / Contoh empat-bit register geser
modul Shift_reg_01 (Data_in, Data_out, jam, reset);
masukan Data_in, jam, reset;
output Data_out;
reg [3:0] Data_reg;

menetapkan Data_out = Data_reg [0];

selalu @ (negedge reset atau posedge jam)
mulai
if (reset == 1'b0) Data_reg <= 4'b0;
lain Data_reg <= (Data_in, Data_reg [3:1]);
akhir
endmodule

/ / Contoh register geser dengan "new_signal" terbentuk di dalam blok disinkronkan
modul shift_reg_02 (Data_in, jam, reset, sig_d, new_signal);
masukan Data_in, jam, reset;
output sig_d, new_signal;
reg sig_a, sig_b, sig_c, sig_d, new_signal;

selalu @ (posedge reset atau posedge jam)
mulai
if (reset == 1'b1)
mulai
sig_a <= 0;
sig_b <= 0;
sig_c <= 0;
sig_d <= 0;
new_signal <= 1'b0;
akhir
lain
mulai
sig_a <= Data_in;
sig_b <= sig_a;
sig_c <= sig_b;
sig_d <= sig_c;
new_signal <= (~ sig_a) & sig_b;
akhir
akhir
endmodule

/ / Contoh register geser dengan "new_signal" yang dibentuk di luar blok disinkronisasi sebagai tugas berkesinambungan.
modul shift_reg_03 (Data_in, jam, reset, sig_d, new_signal);
masukan Data_in, jam, reset;
output sig_d, new_signal;
reg sig_a, sig_b, sig_c, sig_d;

selalu @ (posedge reset atau posedge jam) mulai
if (reset == 1'b1)
mulai
sig_a <= 1'b0;
sig_b <= 1'b0;
sig_c <= 1'b0;
sig_d <= 1'b0;
akhir
lain
mulai
sig_a <= Data_in;
sig_b <= sig_a;
sig_c <= sig_b;
sig_d <= sig_c;
akhir
akhir

assign new_signal = (~ sig_a) & sig_b;
endmodule

 
Saya menggunakan Le (at) n (at) RDO v2001_1a.32

By the way saya gunakan setiap tahap register geser oleh oerforming ATAU operasi antara mereka dan meskipun bahwa peringatan mengatakan bahwa sinyal (register geser) tidak digunakan optimal.

 
Jika Anda menggunakan synplifypro, sangat mudah untuk melakukannya dari bantuan synplify.

 

Welcome to EDABoard.com

Sponsor

Back
Top