作者:falwat
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/falwat/article/details/86171571
本文介紹如何在教程(三)基礎(chǔ)上, 關(guān)聯(lián)ELF輸出文件并使用vivado對(duì)系統(tǒng)進(jìn)行行為仿真。
關(guān)聯(lián)ELF 文件
在vivado 開(kāi)發(fā)教程(三) 在SDK中創(chuàng)建應(yīng)用工程 中, 新建的工程經(jīng)構(gòu)建最終會(huì)生成ELF 輸出文件。 ELF 文件是一種用于二進(jìn)制文件、可執(zhí)行文件、目標(biāo)代碼、共享庫(kù)和核心轉(zhuǎn)儲(chǔ)格式文件(參考:百度百科)。 可以在教程(三)中新建的“test”工程和導(dǎo)入的例程下找到。
切回Vivado, 在塊設(shè)計(jì)文件“system.bd”上右鍵,選擇菜單“Associate ELF Files.。.”關(guān)聯(lián)ELF文件。
在彈出的對(duì)話框中,點(diǎn)擊“Simulation Sources | sim_1 | system_i | microblaze_0 ”樹(shù)右側(cè)的“。..”按鈕, 彈出選擇文件對(duì)話框。
點(diǎn)擊“Add Files.。.” 按鈕,添加ELF文件。
切換目錄至“D:/Projects/test/test.sdk/test_bsp_xgpio_low_level_example_1/Debug”,選中“test_bsp_xgpio_low_level_example_1.elf”, 添加至列表中, 選中新加入的ELF文件并點(diǎn)擊“OK”完成。
在工程管理視圖 | “Sources”窗口 | “Simulation Sources”文件集 | sim_1 | ELF 下能夠看到剛剛關(guān)聯(lián)上去的ELF文件。
新建激勵(lì)文件
點(diǎn)擊“Sources”窗口頂部的“+”按鈕, 打開(kāi)添加源文件對(duì)話框。 選中“Add or create simulation sources”, 點(diǎn)擊“Next”繼續(xù)。
點(diǎn)擊“Create File”按鈕, 在創(chuàng)建源文件對(duì)話框中, 輸入文件名。 點(diǎn)擊“OK”, 點(diǎn)擊“Finish”。
在彈出的“Define Module”對(duì)話框中, 點(diǎn)擊“OK”即可。 激勵(lì)文件不需要有定義輸入輸出端口。
雙擊打開(kāi)“sim_system.v”文件, 復(fù)制“system_wrapper.v”文件中的如下內(nèi)容到“sim_system.v”的模塊中。
wire [7:0]led_8bits_tri_o;
wire reset;
wire rs232_uart_txd;
wire sysclk_125_clk_n;
wire sysclk_125_clk_p;
system system_i
(.led_8bits_tri_o(led_8bits_tri_o),
.reset(reset),
.rs232_uart_rxd(rs232_uart_rxd),
.rs232_uart_txd(rs232_uart_txd),
.sysclk_125_clk_n(sysclk_125_clk_n),
.sysclk_125_clk_p(sysclk_125_clk_p));
修改sim_system.v“文件中, system_i的輸入信號(hào)為”reg“類型, 編寫(xiě)”initial“塊對(duì)輸入信號(hào)進(jìn)行初始化, 為時(shí)鐘信號(hào)編寫(xiě)激勵(lì), 將”timescale“ 設(shè)置為”1ns / 1ns“。 最終生成的代碼如下所示:
`timescale 1ns / 1ns
module sim_system;
wire [7:0]led_8bits_tri_o;
reg reset;
reg rs232_uart_rxd;
wire rs232_uart_txd;
reg sysclk_125_clk_n;
wire sysclk_125_clk_p = ~sysclk_125_clk_n;
system system_i
(.led_8bits_tri_o(led_8bits_tri_o),
.reset(reset),
.rs232_uart_rxd(rs232_uart_rxd),
.rs232_uart_txd(rs232_uart_txd),
.sysclk_125_clk_n(sysclk_125_clk_n),
.sysclk_125_clk_p(sysclk_125_clk_p));
initial begin
reset = 1;
rs232_uart_rxd = 1;
sysclk_125_clk_n = 0;
#100;
reset = 0; // 復(fù)位完成
end
always #4 sysclk_125_clk_n = ~sysclk_125_clk_n; // 125M
endmodule
從”Source“窗口中,選中激勵(lì)文件”sim_system.v“, 右鍵選擇菜單”Set as Top“, 將激勵(lì)文件設(shè)置為頂層。
點(diǎn)擊左側(cè)”Flow Navigator“工具窗口中的”Simulation“ | ”Run Simulation“, 點(diǎn)擊”Run Behavioral Simulation“, 運(yùn)行行為仿真。
編譯成功后會(huì)自動(dòng)打開(kāi)仿真(”SIMULATION“)視圖, 主工具欄會(huì)增加如下幾個(gè)工具圖標(biāo):
為了能夠快速看出仿真效果,縮短仿真時(shí)間, 在SDK 中修改”xgpio_low_level_example.c“文件中的宏常量”LED_DELAY“ 改為1000 并保存, SDK在保存后會(huì)自動(dòng)進(jìn)行編譯, 更新ELF文件。
#define LED_DELAY 1000
切回Vivado, 點(diǎn)擊重新仿真(”Relaunch Simulation“)按鈕。
設(shè)置仿真時(shí)間為500us, 點(diǎn)擊運(yùn)行指定時(shí)間(”Run for 500us“)按鈕。最終的仿真時(shí)序圖如下所示。
審核編輯:何安
-
Vivado
+關(guān)注
關(guān)注
19文章
835瀏覽量
68807
發(fā)布評(píng)論請(qǐng)先 登錄
飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)之設(shè)置時(shí)區(qū)
Gerber輸出中沒(méi)有電路板切口的解決方案

飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)常用命令之磁盤(pán)管理與維護(hù)常用命令
飛凌嵌入式ElfBoard ELF 1板卡-busybox構(gòu)建根文件系統(tǒng)之Busybox編譯
概倫電子大容量波形查看器NanoWave介紹

KiCad 9 探秘(七):使用 Jobset 批量輸出文檔(歸檔)

模擬行為仿真實(shí)現(xiàn)

Vivado Design Suite用戶指南:邏輯仿真

EE-110:ELF和DWARF文件格式快速入門(mén)

嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell編程入門(mén)之提取字符并設(shè)置rtc時(shí)間
飛凌嵌入式ElfBoard ELF 1板卡-shell編程入門(mén)之提取字符并設(shè)置rtc時(shí)間
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門(mén)之實(shí)戰(zhàn)程序
飛凌嵌入式ElfBoard ELF 1板卡-應(yīng)用編程示例控制LED燈之sysfs文件系統(tǒng)
飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門(mén)之實(shí)戰(zhàn)程序
使用PSpice仿真器對(duì)TI智能高側(cè)開(kāi)關(guān)中的熱行為進(jìn)行建模

評(píng)論