天天看點

Modelsim與Quartus聯合調用

Quartus II和Modelsim的聯合仿真

這裡拿​​正點原子FPGA的教程​​中的例子:

首先編寫流水燈的verilog檔案:

flow_red(
    input               sys_clk  ,  //系統時鐘
    input               sys_rst_n,  //系統複位,低電平有效
     
    output  reg  [3:0]  led         //4個LED燈
    );

//reg define
reg [23:0] counter;

//*****************************************************
//**                    main code
//***************************************************** 
                                                                                                                                                                                                                         
//計數器對系統時鐘計數,計時0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        counter <= 24'd0;
    else if (counter < 24'd10)
        counter <= counter + 1'b1;
    else
        counter <= 24'd0;
end

//通過移位寄存器控制IO口的高低電平,進而改變LED的顯示狀态
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        led <= 4'b0001;
    else if(counter == 24'd10) 
        led[3:0] <= {led[2:0],led[3]};
    else
        led <= led;      

注意:這裡為了仿真清晰,counter計數器判斷改成了24’d10

編譯之後,編寫vt檔案,這個檔案用于設定仿真情況的激勵信号和時鐘信号

`timescale 1 ns/ 1 ns
module flow_red_vlg_tst();
// constants                                           
// general purpose registers
// test vector input registers
reg sys_clk;
reg sys_rst_n;
// wires                                               
wire [3:0]  led;

// assign statements (if any)                          
flow_red i1 (
// port map - connection between master ports and signals/registers   
    .led(led),
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n)
);
initial                                                
begin                                                  
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #100 sys_rst_n = 1'b1;
    #1000 $stop;
end                                                    
always #10 sys_clk = ~sys_clk;      

注意:教程中sys_clk 取反用的是 負号"-",實際應當用波浪号"~",否則語句不報錯,但不生效。

之後,在Assignments->setting裡面将vt檔案進行綁定。

Modelsim與Quartus聯合調用

最後,選擇Tools->RunSimulation Tool->RTL Simulation,即可成功運作Modelsim

Modelsim與Quartus聯合調用

進入Modelsim界面,點選第三個放大鏡可以顯示全部波形。

Modelsim與Quartus聯合調用