Страница 1 из 1

Проблема с квартусом

Добавлено: Ср фев 27, 2013 11:16:51
Nevox
Здравствуйте,хотел бы узнать.Есть модуль вывода. есть прошивка на верилоге ,она работает все хорошо.Но ,когда я вставляю модуль "на горячую" в крейт все лампочки зажигаются(ну или какая-то часть)такого быть не должно... Проблема в квартусе? может я опцию какую не включаю или еще чего? или все-таки в железе?

Код: Выделить всё

module D3 (WR,RES,RD,CS,DAT,A,OUT,PWR);
   input RES;
   input wire [3:0] A;
   input wire WR, RD, CS,PWR;
   inout wire [7:0] DAT;
   output wire [8:1] OUT;

   reg [7:0] D;
   reg [8:1] INREG;
   
   always @(negedge RD or negedge WR)  
   case (A)
   4'b0000:    D <= 8'b00100000;
   4'b0001:    D <= 8'b00010110;        
   4'b0010:    D <= 8'b00001000;     
   4'b0011:    D <= 8'b00001000;
   4'b0100:    D <= 8'b00001001;
   4'b1000:    D <= INREG;
   4'b1010:    D <= {4'b0, PWR, 3'b001};
   default:    D = 8'b00000000;
   endcase                   

   always @(negedge WR or negedge RES)
begin
   if (RES == 0)
        INREG <= 0;
    else if (!CS && A == 8)
        INREG <= DAT; 
end   

  assign DAT[7:0]=(!CS&!RD)?D[7:0]:8'bz;
 
  assign OUT[1]=(INREG[1])?8'b0:8'bz;
  assign OUT[2]=(INREG[2])?8'b0:8'bz;
  assign OUT[3]=(INREG[3])?8'b0:8'bz;
  assign OUT[4]=(INREG[4])?8'b0:8'bz;
  assign OUT[5]=(INREG[5])?8'b0:8'bz;
  assign OUT[6]=(INREG[6])?8'b0:8'bz;
  assign OUT[7]=(INREG[7])?8'b0:8'bz; 
  assign OUT[8]=(INREG[8])?8'b0:8'bz;
  
  endmodule
            
может можно как-то задать начальное значение пинов или что-нибудь такое. Микросхема Altera EPM3064 44/10

Re: Проблема с квартусом

Добавлено: Ср фев 27, 2013 14:55:22
coredumped
Единственное, что можно посоветовать - добавьте на плату супервизор питания, который будет генерировать сигнал сброса. Его соответственно, нужно подать на CPLD, и по этому сигналу устанавливать начальное состояние. Квартус тут совсем не при чем.

Re: Проблема с квартусом

Добавлено: Ср фев 27, 2013 14:57:17
Nevox
вот хотелось бы решить эту проблему на программном уровне,если можно)

Re: Проблема с квартусом

Добавлено: Ср фев 27, 2013 17:39:12
Kavka
Вы на горячую вставляете и у вас шум/дребезг контактов идёт пока не вставилось. Либо снаружи сброс с задержкой, как уже предложили. Либо таймер в ПЛИС. Но что-то кажется мне, что это "не айс".

Re: Проблема с квартусом

Добавлено: Ср фев 27, 2013 22:02:40
coredumped
Kavka писал(а): Либо таймер в ПЛИС.
Есть такая техника, однако для этого нужен вход внешнего клока (генератора).
Предположим, что такой клок есть и имя его clk

Код: Выделить всё

input clk;

wire reset;
reg[15:0] count;

reset = (count < 16'hFFFF);
 
always @(posedge clk) if(reset) count <= count+1'b1;

reset будет в состоянии 1, пока счетчик не "отмолотит" 65536 тактов, потом сбросится в 0. Однако этот код сожрет 16 логических ячеек, что для данной CPLD может быть проблемой. Можно, конечно, уменьшить разрядность счетчика count, тут все зависит от частоты клока и желаемого времени задержки.
PS: Идея, я думаю, понятна - остальное в Ваших руках. Однако решение с супервизором питания гораздо более простое и правильное.

Re: Проблема с квартусом

Добавлено: Чт фев 28, 2013 07:10:52
Nevox
Спасибо,попробую,в магистрали должна быть бегающая частота)Надо проверить)