реклама на сайте
подробности

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> ModelSim, вопросы новичка
andrew_b
сообщение May 26 2018, 05:03
Сообщение #61


Профессионал
*****

Группа: Свой
Сообщений: 1 923
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(iosifk @ May 25 2018, 21:35) *
Одноглазого бога звали Один. Именно поэтому мы говорим: один
А "этруски" — "это русские". Вы иногда такое скажете, что хоть стой хоть падай.
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 26 2018, 07:09
Сообщение #62


Гуру
******

Группа: Модераторы
Сообщений: 3 923
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(andrew_b @ May 26 2018, 08:03) *
А "этруски" — "это русские". Вы иногда такое скажете, что хоть стой хоть падай.

В некоторых книгах именно так и говорится о славянских племенах: Этруски, пруссы, руссы...
И зачем падать?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Sprite
сообщение May 26 2018, 14:23
Сообщение #63


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 11-05-08
Пользователь №: 37 414



Flip-Flop, Иосиф Григорьевич - спасибо!
Прочитал еще раз документ и переписал автомат согласно последнему примеру. Получилось вот что:
Код
module generator
(
    input    clk,
    input     ena,
    output reg out
);
    wire     pulse;
    reg     [15:0]    cnt_val;
    reg     [15:0]    cnt_comp_val;
    reg     [2:0]    state;
    parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3;

    reg     [15:0]    comp_val[3:0];
    initial
    begin
        comp_val[0] = 16'd4;
        comp_val[1] = 16'd5;
        comp_val[2] = 16'd6;
        comp_val[3] = 16'd7;
    end

    //----------------------------------------    
    always @ (posedge clk)
    begin
        if (ena)
        begin
            case (state)
                S0:    
                begin
                    cnt_comp_val <= comp_val[0];
                    state <= pulse? S1:S0;
                    out <= 1;
                end
                S1:    
                begin
                    cnt_comp_val <= comp_val[1];
                    state <= pulse? S2:S1;
                    out <= 0;
                end
                S2:    
                begin    
                    cnt_comp_val <= comp_val[2];
                    state <= pulse? S3:S2;
                    out <= 1;
                end
                S3:    
                begin    
                    cnt_comp_val <= comp_val[3];
                    state <= pulse? S0:S3;
                    out <= 0;
                end
                default:
                begin
                    cnt_comp_val <= comp_val[0];
                    state <= S0;
                    out <= 0;
                end
            endcase
        end
        else
        begin
            cnt_comp_val <= comp_val[0];
            state <= S0;
            out <= 0;
        end
    end

    //----------------------------------------
    always @(posedge clk)
    begin
        if(ena)
            if(cnt_val==cnt_comp_val)
                cnt_val = 4'b1;
            else
                cnt_val = cnt_val + 1'd1;
        else
            cnt_val = 4'd1;
    end    
    assign pulse = (cnt_val==cnt_comp_val);
    //----------------------------------------        
endmodule

Проверил - все работает biggrin.gif

А насчет счетчика в отдельном файле не вопрос - так и сделаю - просто собрал что называется на "скорую руку".
Go to the top of the page
 
+Quote Post

5 страниц V  « < 3 4 5
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2018 - 00:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.00816 секунд с 7
ELECTRONIX ©2004-2016