[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Builder 07 июня 2005 г. 13:42
В ответ на: Ответ: отправлено <font color=gray>VaLUX</font> 07 июня 2005 г. 04:08

Как уже сказали - только синхронная схема (проблем при анализе меньше будет).
При переходе от входных сигналов счётчика к внутренней - не забудьте поставить тригеры для борьбы с метастабильностью. Можно ещё поставить фильтрик по каждой линии (это уж сами смотрите, сейчас у вас не работает наверняка не из-за этого).
Вот мой декодер, только он для наглядности был сделан в графике ActiveHDL, но думаю и так разберётесь.
Входы - подавал после перехода к внутренней частоте, выходы - на управление счётчиком. Остальное по аналогии как по ссылкам.
// ---------- Design Unit Header ---------- //
`timescale 1ps / 1ps

module quad (CLK_I,Cos_I,ENA_I,Null_I,RST_I,Sin_I,Cnt_Dir_O,Cnt_O,Null_O) ;

// ------------ Port declarations --------- //
input CLK_I;
wire CLK_I;
input Cos_I;
wire Cos_I;
input ENA_I;
wire ENA_I;
input Null_I;
wire Null_I;
input RST_I;
wire RST_I;
input Sin_I;
wire Sin_I;
output Cnt_Dir_O;
wire Cnt_Dir_O;
output Cnt_O;
wire Cnt_O;
output Null_O;
wire Null_O;

// ----------- Signal declarations -------- //
wire clk;
wire clrn;
wire ena;
wire NET1029;
wire NET1237;
wire NET2918;
wire NET2948;
wire NET529;
wire NET550;
wire prn;
// ----------- Continues assignments -------//
assign prn=1'b1;
// -------- Component instantiations -------//
assign clk = CLK_I;
assign Null_O = NET2948 & NET1237 & NET1029;
assign clrn = ~(RST_I);
ffde U13
(
.clk(clk),
.clrn(clrn),
.d(Sin_I),
.ena(ena),
.prn(prn),
.q(NET1237)
);
ffde U14
(
.clk(clk),
.clrn(clrn),
.d(Cos_I),
.ena(ena),
.prn(1'b1),
.q(NET2948)
);
assign ena = ENA_I;
ffde U3
(
.clk(clk),
.clrn(clrn),
.d(Null_I),
.ena(ena),
.prn(prn),
.q(NET1029)
);
ffde U5
(
.clk(clk),
.clrn(clrn),
.d(NET1237),
.ena(ena),
.prn(prn),
.q(NET2918)
);
ffde U6
(
.clk(clk),
.clrn(clrn),
.d(NET2948),
.ena(ena),
.prn(prn),
.q(NET529)
);
assign NET550 = NET529 ^ NET1237;
assign Cnt_Dir_O = NET2948 ^ NET2918;
assign Cnt_O = Cnt_Dir_O ^ NET550;

endmodule

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru