Thông báo

Collapse
No announcement yet.

Hỏi về mô phỏng SOPC trong Modelsim

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hỏi về mô phỏng SOPC trong Modelsim

    Mình viết code trong verilog,rùi xẩy dựng 1 hệ thống SOPC gồm CPU,Memoryonchip,pio ra 8 bit,rùi viết code nios xuất ra led đỏ trên DE2 board,đã test trên mạch chạy,mình muốn chạy bằng modelsim để xem dạng sóng mà viết file testbech chưa có kinh nghiệm,các bạn xem giùm lỗi của mình tròng file testbench của modelsim này:
    CODE VERILOG:
    module tony(clock,reset_n,dataout);
    input clock;
    input reset_n;
    //input [7:0] datain;
    output [7:0] dataout;

    luca luca_inst
    (
    .clk_0 (clock),
    .out_port_from_the_pio_0 (dataout),
    .reset_n (reset_n)
    );
    endmodule
    CODE NIOS
    #include <stdio.h>
    #include <system.h>
    #include <io.h>

    int main()
    {
    int i;
    while(1)
    {
    IOWR_16DIRECT(PIO_0_BASE ,0,i);
    i++;
    if(i==0xff) i=0;
    }
    return 0;
    }
    CODE MODELSIM
    module hatxi();
    reg clk,reset_n;
    initial
    begin
    clk=1'b1;
    reset_n=1'b0;
    end
    always
    begin
    #20 clk<=~clk;
    end
    reg [7:0] dataout;
    tony(clk,reset_n,dataout);
    endmodule
    Mình không biết code modelsim sai chỗ nào
    nhân tiện cho hỏi luồn trong verilog 2 toán tử & và && khác nhau nhủ thế nào,nếu có VD thì hay.thanks

  • #2
    Nguyên văn bởi somali Xem bài viết
    Mình viết code trong verilog,rùi xẩy dựng 1 hệ thống SOPC gồm CPU,Memoryonchip,pio ra 8 bit,rùi viết code nios xuất ra led đỏ trên DE2 board,đã test trên mạch chạy,mình muốn chạy bằng modelsim để xem dạng sóng mà viết file testbech chưa có kinh nghiệm,các bạn xem giùm lỗi của mình tròng file testbench của modelsim này:
    CODE VERILOG:
    module tony(clock,reset_n,dataout);
    input clock;
    input reset_n;
    //input [7:0] datain;
    output [7:0] dataout;

    luca luca_inst
    (
    .clk_0 (clock),
    .out_port_from_the_pio_0 (dataout),
    .reset_n (reset_n)
    );
    endmodule
    CODE NIOS
    #include <stdio.h>
    #include <system.h>
    #include <io.h>

    int main()
    {
    int i;
    while(1)
    {
    IOWR_16DIRECT(PIO_0_BASE ,0,i);
    i++;
    if(i==0xff) i=0;
    }
    return 0;
    }
    CODE MODELSIM
    module hatxi();
    reg clk,reset_n;
    initial
    begin
    clk=1'b1;
    reset_n=1'b0;
    end
    always
    begin
    #20 clk<=~clk;
    end
    reg [7:0] dataout;
    tony(clk,reset_n,dataout);
    endmodule
    Mình không biết code modelsim sai chỗ nào
    nhân tiện cho hỏi luồn trong verilog 2 toán tử & và && khác nhau nhủ thế nào,nếu có VD thì hay.thanks
    1) Reset_n của bạn active low, bạn nên tạo 1 xung reset, ở mức thấp vài chu kì
    2) Bạn xem đã dịch code ra binary và initialize cho on-chip memory của bạn chưa
    3) Bạn xem có tick để tạo mẫu dùng trong mô phỏng (simulation model) của hệ thống của bạn chưa ... cái này mình không rõ, bạn có thể "thấy" được các tín hiệu ở trong module tony của bạn không?
    4) & dùng làm AND 2 tín hiệu, && dùng trong biểu thức luân lý (logical AND) ...
    a = c & b, a = ((c==10) && (b==10)) ...

    Comment


    • #3
      đầu tiên là trong file mô phỏng bạn chưa reset hệ thống nha.
      reg [7:0] dataout;
      tony(clk,reset_n,dataout);
      bạn nên khai báo dataout là wire, vì thật chất đây ta cần dataout chỉ là 8 pin out để mình quan sát trên modelsim chứ không phải là thanh ghi lưu trữ.

      Comment


      • #4
        code gi dau ma dat may cai ten bien doc mac oi trinh bay thi lon xon
        vua dai lai vua lon xon cha giong ai
        chay dc chet lien

        Comment

        Về tác giả

        Collapse

        somali Tìm hiểu thêm về somali

        Bài viết mới nhất

        Collapse

        Đang tải...
        X