Цитата(foxit @ Jan 29 2009, 23:54)

Доброго времени суток.
Есть высокостабильный сигнал 1 Мгц.
Из него необходимо получить 100 кГц, 10 кГц, 1 Гц, 0.1 Гц.
Я так понимаю нужно сделать делитель на 10.
Данный сабж нужно сделать на ПЛИС Altera max3000.
Помогите, в ПЛИСах не силен.
Я сам не давно пишу на SV(систем верилог).
До 1 сек просимулировал, нормально, на 0.1Гц не стал, очень долго ждать результатов.
Вот собственно программа, где clk вх. 1мГц и выхода наверное понятно.
Код влазит в EPM3064. Если нужно корректировать частоты, то делаешь в условиях.
Цитата
module del (
input clk,
output out_100kHz,
output out_10kHz,
output out_1Hz,
output out_01Hz
);
bit [3:0] count_100;
bit [3:0] count_10;
bit [13:0] count_1;
bit [3:0] count_01;
// Деление 1мГц на 10
always @(posedge clk) begin
if(count_100++ > 8) begin
out_100kHz = 1;
count_100 = 0;
end
else
out_100kHz = 0;
end
//---------------------------------------------
// Деление 100кГц на 10
always @(posedge out_100kHz) begin
if(count_10++ > 8) begin
out_10kHz = 1;
count_10 = 0;
end
else
out_10kHz = 0;
end
//----------------------------------------------
// Деление 10кГц на 10000
always @(posedge out_10kHz) begin
if(count_1++ > 9980) begin
out_1Hz = 1;
count_1 = 0;
end
else
out_1Hz = 0;
end
//----------------------------------------------
// Деление 1Гц на 10
always @(posedge out_1Hz) begin
if(count_01++ > 8) begin
out_01Hz = 1;
count_01 = 0;
end
else
out_01Hz = 0;
end
//----------------------------------------------
endmodule