選擇器件,先點Specify中的Boards,再點ZedBoard Zynq Evaluation and Development Kit。下一步,直到完成,進入IDE。
?
在IDE的Sources窗口中右鍵選擇Add Sources...,添加OpenRisc verilog源碼。我們將openrisc_rtl_verilog_or1200_rel3版本源碼解壓到本地磁盤,還需要將or1200_defines.v, or1200__qmem_top.v, or1200_spram_2048x32.v三個文件進行修改,可以下載后直接覆蓋原文件,原書中有詳細修改說明。
?
選擇第二項,下一步
?
點Add Directories...選擇源碼存放目錄,確定,返回IDE。這時還需要添加一個仿真激勵文件,我們創建一個文件or1200_tb.v,步驟如下:
仍然在Sources窗口右鍵,Add Sources...
?
選擇第三項,Next
?
選擇Create File...,輸入or1200_tb,確定,回到IDE。雙擊打開,修改其內容如下:
`timescale 1ns / 100ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2014/01/26 12:57:10
// Design Name:
// Module Name: or1200_tb
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module or1200_tb();
reg CLOCK_50;
reg rst;
initial begin
CLOCK_50 = 1'b0;
forever #10 CLOCK_50 = ~ CLOCK_50;
end
initial begin
rst = 1'b1;
#200 rst = 1'b0;
#1000 $stop;
end
or1200_top or1200_top_inst
(
.clk_i(CLOCK_50),
.rst_i(rst),
.pic_ints_i(20'b0),
.clmode_i(2'b00),
.iwb_clk_i(clk_i),
.iwb_rst_i(rst),
.iwb_dat_i(32'b0),
.iwb_ack_i(1'b0),
.iwb_err_i(1'b0),
.iwb_rty_i(1'b0),
.iwb_cyc_o(),
.iwb_adr_o(),
.iwb_dat_o(),
.iwb_stb_o(),
.iwb_we_o(),
.iwb_sel_o(),
`ifdef OR1200_WB_CAB
.iwb_cab_o(),
`endif
.dwb_clk_i(clk_i),
.dwb_rst_i(rst),
.dwb_dat_i(32'b0),
.dwb_ack_i(1'b0),
.dwb_err_i(1'b0),
.dwb_rty_i(1'b0),
.dwb_cyc_o(),
.dwb_adr_o(),
.dwb_dat_o(),
.dwb_stb_o(),
.dwb_we_o(),
.dwb_sel_o(),
`ifdef OR1200_WB_CAB
.dwb_cab_o(),
`endif
.dbg_stall_i(1'b0),
.dbg_ewt_i(1'b0),
.dbg_lss_o(),
.dbg_is_o(),
.dbg_wp_o(),
.dbg_bp_o(),
.dbg_stb_i(1'b0),
.dbg_we_i(1'b0),
.dbg_adr_i(0),
.dbg_dat_i(0),
.dbg_dat_o(),
.dbg_ack_o(),
.pm_cpustall_i(0),
.pm_clksd_o(),
.pm_dc_gate_o(),
.pm_ic_gate_o(),
.pm_dmmu_gate_o(),
.pm_immu_gate_o(),
.pm_tt_gate_o(),
.pm_cpu_gate_o(),
.pm_wakeup_o(),
.pm_lvolt_o()
);
endmodule
?
?
將or1200_tb.v設為仿真的頂層文件。一切就緒,下面進行行為仿真。
?
在左側設計流程中選擇Run Simulation,接著點行為仿真。經過初始化,進入Vivado Simulator界面。添加信號or1200_tb/or1200_top_inst/or1200_cpu/or1200_ctrl/ex_insn,or1200_tb/or1200_top_inst/or1200_cpu/or1200_rf/rf_b/mem[1]和mem[2]到波形觀測窗。
將前面生成的OpenRISC代碼mem.data復制到仿真目錄(根據你的工程路徑設置),如下圖
?
在仿真界面命令行依次輸入restart,run 1000ns后得到結果如下
?
對比mem.data文件最后幾行二進制代碼:
a4000000
e020004d
e040004d
9c21000a
e0420800
15000001
可以看到,ex_insn信號依次呈現了上述指令,并且能看到mem[1]和mem[2]的值依次變為0x0000000a。對比前面trace文件可以知道,mem[1]即OpenRISC的r1寄存器,mem[2]即r2寄存器,依次類推。我們在進一步學習OpenRISC時,可以重點關注這些寄存器的值變化。
評論
查看更多