User Tag List

Показано с 1 по 10 из 485

Тема: FPGA-реплика ЭВМ ДВК-3 и платы МС1201

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    Код:
    sed -i 's/\t/   /g' *.v
    А оно разве выполнит выравнивание? Не разрушит отступы?
    Моя утилита по умному заменяет табуляции на разное количество пробелов (и жмет в обратную сторону тоже верно)

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    А оно разве выполнит выравнивание? Не разрушит отступы?
    Да нет, оно тупо заменяет таб на три пробела. Ну, тогда я, видимо, не совсем понимаю, чего именно мы добиваемся. Мне казалось, что проблема у нас в том, что текст, отлично смотрящийся в редакторе квартуса, в просмотрщике гитхаба превращается в мусор, из-за разного размера табуляций. Вот, например, кусок кода с гитхаба:
    Код:
       case (interrupt_state)
     		         // нет активного прерывания
                  i_idle :
                            begin
    			//  Если поднят флаг - переходим в состояние активного прерывания
                               if ((ide == 1'b1) & (interrupt_trigger == 1'b1))  begin
                                  interrupt_state <= i_req ; 
                                  irq <= 1'b1 ;    // запрос на прерывание
                               end 
    									else	irq <= 1'b0 ;    // снимаем запрос на прерывания
    
                            end
    					// Формирование запроса на прерывание			
                   i_req :			  if (ide == 1'b0) 	interrupt_state <= i_idle ; 	
                                    else if (iack == 1'b1) begin
                                        // если получено подтверждение прерывания от процессора
                                        irq <= 1'b0 ;               // снимаем запрос
    												interrupt_trigger <= 1'b0;
                                        interrupt_state <= i_wait ; // переходим к ожиданию окончания обработки
                                    end 
    					// Ожидание окончания обработки прерывания			
                   i_wait :
                               if (iack == 1'b0)  interrupt_state <= i_idle ; 
        endcase
    Если его пропустить через sed по приведенному выше правилу, то на том же гитхабе он становится таким:
    Код:
    case (interrupt_state)
                    // нет активного прерывания
                  i_idle :
                            begin
                         //  Если поднят флаг - переходим в состояние активного прерывания
                               if ((ide == 1'b1) & (interrupt_trigger == 1'b1))  begin
                                  interrupt_state <= i_req ; 
                                  irq <= 1'b1 ;    // запрос на прерывание
                               end 
                               else   irq <= 1'b0 ;    // снимаем запрос на прерывания
    
                            end
                   // Формирование запроса на прерывание         
                   i_req :          if (ide == 1'b0)    interrupt_state <= i_idle ;    
                                    else if (iack == 1'b1) begin
                                        // если получено подтверждение прерывания от процессора
                                        irq <= 1'b0 ;               // снимаем запрос
                                        interrupt_trigger <= 1'b0;
                                        interrupt_state <= i_wait ; // переходим к ожиданию окончания обработки
                                    end 
                   // Ожидание окончания обработки прерывания         
                   i_wait :
                               if (iack == 1'b0)  interrupt_state <= i_idle ; 
        endcase
    Вроде все отлично, все отступы встали на свои места, ничего не разрушено.

  4. #3

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    Вроде все отлично, все отступы встали на свои места, ничего не разрушено.
    Да, для этого верилога отлично. Просто моя утилита писалась изначально для ассемблера, она умеет в локальные метки и еще всякое. Вот в ассемблере где табуляции бывают после имен меток, мнемоник и операндов разной длины умная табуляция нужна. Для верилога нужна чтобы выравнивать строчные комментарии после кода:
    Код:
    module am2901
    (
       input          cp,         // clock positive
       input    [8:0] i,          // operation code
       input    [3:0] a,          // port A address (readonly)
       input    [3:0] b,          // port B address (read/write)
       input    [3:0] d,          // direct data input
       output   [3:0] y,          // data output (3-state)
                                  //
       input          oe_n,       // Y output enable
       inout          q0,         // shift line Q-register LSB
       inout          q3,         // shift line Q-register MSB
       inout          ram0,       // shift line register stack LSB
       inout          ram3,       // shift line register stack MSB
       input          cin,        // carry input
                                  //
       output         cout,       // carry output
       output         ovr,        // arithmetic overflow
       output         f3,         // MSB of ALU output
       output         zf,         // (F[3:0] == 0) flag output (OC)
       output         g_n,        // carry generate output
       output         p_n         // carry propagate output
    );

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Реплика контроллера НГМД ДВК MY4
    от anasana в разделе ДВК, УКНЦ
    Ответов: 47
    Последнее: 30.06.2023, 19:07
  2. Реплика всего семейства ДВК
    от Daniil Chislov 86 в разделе ДВК, УКНЦ
    Ответов: 21
    Последнее: 13.11.2019, 16:36
  3. Ответов: 6
    Последнее: 30.07.2018, 09:04
  4. Аукцион плат ДВК МС1201.02, НМЛ СМ5300.01 и др.
    от OS в разделе Барахолка (архив)
    Ответов: 45
    Последнее: 19.11.2011, 14:02
  5. Реплика КМД ДВК (MY)
    от KALDYH в разделе ДВК, УКНЦ
    Ответов: 19
    Последнее: 12.11.2009, 15:43

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •