摘要:4.2動態(tài)鏈接庫的程序結構利用modelsim仿真時,可根據VHDL文件的聲明,調用DLL文件(如sim.dll)。在VHDL文件中已經給出了調用文件(sim.dll)和初始化函數(shù)名(如sim_init),modelsim根據這些信息,調用sim.dll中的sim_init函數(shù),完成初始化工作。初始化包括:①初始化全局變量;②設置VHDL輸入輸出信號與c程序變量的對應關系;③
4.2 動態(tài)鏈接庫的程序結構
利用modelsim仿真時,可根據VHDL文件的聲明,調用DLL文件(如sim.dll)。在VHDL文件中已經給出了調用文件(sim.dll)和初始化函數(shù)名(如sim_init),modelsim根據這些信息,調用sim.dll中的sim_init函數(shù),完成初始化工作。初始化包括:
①初始化全局變量;
②設置VHDL輸入輸出信號與c程序變量的對應關系;
③設置輸出信號的一些初始狀態(tài)(mti_ScheduleDriver);
④設置在仿真器重新仿真(restart)和仿真器退出仿真(quit)等情況下執(zhí)行的一些函數(shù)(mti_AddRestartCB和mti_AddQuitCB等),如釋放動態(tài)申請內存等;
⑤設置敏感表,給出在某些信號發(fā)生變化(如時鐘上升沿等)時執(zhí)行的函數(shù)。
⑥其它。
C程序的設計步驟如下:
(1)包含頭文件,包括c程序常用的一些頭文件和modelsim給出的外部語言接口頭文件mti.h。Modelsim給出的外部接口函數(shù)說明、類型定義等都在mti.h中。
(2)定義自己的結構體,這一點主要是為了編程方便,例如輸入輸出信號對應的變量在各函數(shù)中基本上都會用到,可以把這些變量定義成一個結構,便于參數(shù)傳遞。
(3)編寫初始化函數(shù)
初始化函數(shù)的定義為:
init_func(mtiReginoIdT region,char *param,
mtiInterfaceListT *generics,mtiInterfaceListT *ports)
各參數(shù)的意義可以參閱modelsim用戶手冊。
下面結合上面給出的初始化函數(shù)要完成的任務進行詳細說明。
a.初始化全局變量(略)
b.設置VHDL輸入輸出信號與c程序變量的對應關系。這是通過調用mti_FindPort函數(shù)實現(xiàn)的。mti_FindPort函數(shù)定義為:
mfiSignalIdT mti_FindPort(mtiInterfaceListT *list,char *name);
例如,定義輸入輸出信號對應的結構ip:
PortStruct ip;
就可以用:
ip_in1=mti_FindPort(ports,“in1”);
來實現(xiàn)輸入信號in1與變量in1的對應關系。
對輸出信號來說,它的目的是產生驅動。因此,這些變量(out1和out2)除了要找到對應的輸出信號外,還要驅動這些信號。對信號的驅動可以通過調用mti_CreateDriver函數(shù)來實現(xiàn)。該函數(shù)的定義為:
mtiDriverIdT mti_CreateDriver(mtiSignalIdT sig);
由于這些變量一般只用于對外驅動,因此可以簡單寫成下面的形式:
ip.out1 = mti+ CreateDriver(mti_FindPort(ports,“out1”));
通信工程師備考資料免費領取
去領取