Ruslan (03.04.2010 00:26 - 00:30, просмотров: 247) ответил IgorChem на Помогайте коллективным разумом, вроде изменил доступ к массиву до двухпортового, но все еще не компилится... Через 5 минут синтеза оборвал на 9%.
Ругается то что не может разместить в блочную память. У тебя используется асинхронное чтение. Вот тут:
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
Перепиши код так чтобы все тактировалось от одного clk.
Пусть будет sys_clk = 100 Мгц.
Далее входные данные ты складываешь в двух-портовое FIFO или RAM по частоте in_clk = 400 Мгц.
Предлагаю данные класть по 32 бита. Для это пишешь входной блок который кладет в промежуточный регистр по байту, а на четвертом клоке кладет в двух-портовое FIFO или RAM. Входной блок тактируется in_clk.
Далее на выходе двух-портового FIFO или RAM ты имеешь 32 бита на частоте 100 Мгц. И вот по этим 100 Мгц ты проводишь всю математику. И по этому sys_clk, выдвигаешь свои данные. А так у тебя какая то каша из синхронных и асинхронных блоков.
P.S. Квартус на 46% все еще продолжает компилировать. :)