Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Программируемые логические схемы и их применение»

Что я делаю не так, Quartus не может скомпилить мой проект вися 5минут на 9%

Отправлено IgorChem (84.165.214.96) 02 апреля 2010, г. 23:54


Всем привет,

проект должен зачитывать 8 бит и их клок (InData, InClock) на частоте 400МГц и выплевывать результат в виде 1 бита (OutData) и его клока (OutClock) на частоте около 1МГц.

Суть проекта в том, что надо найти начало сигнала, начать его оцифровывать со всей возможной скоростью в объеме 192*1024 бит и сохранять отпечаток данных во времени. Я сохраняю эти данные в циклические массивы "RingData" для данных и "TimeStep" для таймера. На один такт в 50МГц я использую только одну запись в эти массивы и на один такт в 1МГц - не более одного чтения из этих массивов.

Когда этот проект я начинаю синтезить в Квартусе, последний виснет на 9%. Последние сообщения от него, которые я вижу привожу дословно:

Info: Found 2 instances of uninferred RAM logic
Info: RAM logic "RingData" is uninferred due to asynchronous read logic
Info: RAM logic "TimeStep" is uninferred due to inappropriate RAM size
Warning: Cannot convert all sets of registers into RAM megafunctions when creating nodes;

Пожалуйста, помогите мне разобраться что же я не так делаю!

Спасибо

Игорь

[code]
module My_First_Project (InData, InReady, OutClock, OutData);
parameter MaxK=8;
parameter MaxN=MaxK*1024;
input [7:0] InData;
input InReady, OutClock;
output OutData;
reg OutData;

reg signed [15:0] LocData1, aLD0, aLD1, aLD2, aLD3, aLD4;
reg signed [15:0] LD0, LD1, LD2, LD3, LD4;
reg [1:0] DeMuxCounter;
reg [7:0] Temp;

reg [63:0] H00, H01, H02, H03, H04, H05, H06, H07, H08, H09;
reg [63:0] H10, H11, H12, H13, H14, H15, H16, H17, H18, H19;
reg [63:0] H20, H21, H22, H23, H24, H25, H26, H27, H28, H29;
reg [63:0] H30, H31, H32, H33, H34, H35, H36, H37, H38, H39;

reg [63:0] G01, G02, G03, G04, G05, G06, G07, G08, G09;
reg [63:0] G10, G11, G12, G13, G14, G15, G16, G17, G18, G19;
reg [63:0] G20, G21, G22, G23, G24, G25, G26, G27, G28, G29;
reg [63:0] G30, G31, G32, G33, G34, G35, G36, G37, G38, G39;

reg [15:0] NadoT;
reg [63:0] CurTime;
reg NextStep;

reg [63:0] RingData [0:MaxN-1];
reg [63:0] TimeStep [0:MaxK-1];

reg [12:0] BeginPos;
reg [12:0] EndPos;

reg [79:0] CurShiftData;
reg [6:0] CurPos;
reg EndPosSw;

initial
begin
CurTime=0;
NadoT=0;
DeMuxCounter=0;
BeginPos=0;
EndPos=0;
CurPos=79;
EndPosSw=1;
end


always @(posedge InReady)
begin
LocData1={InData[0], Temp[0], InData[1], Temp[1], InData[2], Temp[2], InData[3], Temp[3],
InData[4], Temp[4], InData[5], Temp[5], InData[6], Temp[6], InData[7], Temp[7]};
end


always @(negedge InReady) Temp<=InData;


always @(LocData1)
begin
if(DeMuxCounter)
begin
DeMuxCounter<=DeMuxCounter+1;
{aLD0, aLD1, aLD2, aLD3, aLD4}<={aLD1, aLD2, aLD3, aLD4, LocData1};
NextStep<=0;
end
else
begin
DeMuxCounter<=DeMuxCounter+1;
{aLD0, aLD1, aLD2, aLD3, aLD4} <= {aLD1, aLD2, aLD3, aLD4, LocData1};
{LD0, LD1, LD2, LD3, LD4} <= {aLD1, aLD2, aLD3, aLD4, LocData1};
NextStep<=1;
end
end


always @(posedge NextStep)
begin
begin
G39<=H38; G38<=H37; G37<=H36; G36<=H35; G35<=H34; G34<=H33; G33<=H32; G32<=H31; G31<=H30; G30<=H29;
G29<=H28; G28<=H27; G27<=H26; G26<=H25; G25<=H24; G24<=H23; G23<=H22; G22<=H21; G21<=H20; G20<=H19;
G19<=H18; G18<=H17; G17<=H16; G16<=H15; G15<=H14; G14<=H13; G13<=H12; G12<=H11; G11<=H10; G10<=H09;
G09<=H08; G08<=H07; G07<=H06; G06<=H05; G05<=H04; G04<=H03; G03<=H02; G02<=H01; G01<=H00;

if(NadoT)
begin
RingData[BeginPos]=H39;
NadoT=NadoT-1;
if((BeginPos&1023)==0) TimeStep[BeginPos[12:10]]=CurTime;
BeginPos=BeginPos+1;
end
end

begin
CurTime<=CurTime+1;

H39<=G39; H38<=G38; H37<=G37; H36<=G36; H35<=G35; H34<=G34; H33<=G33; H32<=G32; H31<=G31; H30<=G30;
H29<=G29; H28<=G28; H27<=G27; H26<=G26; H25<=G25; H24<=G24; H23<=G23; H22<=G22; H21<=G21; H20<=G20;
H19<=G19; H18<=G18; H17<=G17; H16<=G16; H15<=G15; H14<=G14; H13<=G13; H12<=G12; H11<=G11; H10<=G10;
H09<=G09; H08<=G08; H07<=G07; H06<=G06; H05<=G05; H04<=G04; H03<=G03; H02<=G02; H01<=G01;
H00<={LD1, LD2, LD3, LD4};

if(LD1>=2000 && LD2>=2000 && LD3>=2000 && LD4>=2000)
begin
NadoT<=(NadoT&1023)+3072;
end
end
end

always @(posedge OutClock)
begin
{CurShiftData[78:0], OutData}=CurShiftData;
CurPos=CurPos-1;
if(CurPos==0)
begin
CurPos=79;
CurShiftData[79:64]=EndPos;
if((EndPos&1023)==0 && EndPosSw)
begin
CurShiftData[63:0]=TimeStep[EndPos[12:10]];
EndPosSw=0;
end
else
begin
CurShiftData[63:0]=RingData[EndPos];
EndPosSw=1;
EndPos=EndPos+1;
end
end
end
endmodule
[/code]

Если вы - "IgorChem", то можете присоединить файл к сообщению.

Имя*:    Пароль*: 
Максимальный размер файла: 65536 байт.
Разрешённые форматы: png gif pdf jpg jpeg zip rar

(* - обязательные поля)


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 234:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru