肾虚吃什么| 乳腺点状钙化是什么意思| 社康是什么| 望洋兴叹什么意思| 蛋花样大便是什么原因| 经常吃辣椒有什么好处和坏处| 犹豫的反义词是什么| 是什么数学符号| 孩子手脚冰凉是什么原因| adhd是什么病| 十月底是什么星座| 什么气| 嘴唇淡紫色是什么原因| 1959年属猪的是什么命| 心绞痛是什么感觉| 神疲乏力是什么症状| 果糖胺偏高说明什么| 辛酉日五行属什么| 一个巾一个童读什么| 茯苓和土茯苓有什么区别| 五常大米是什么意思| 粉刺是什么东西| 害羞的近义词是什么| 洋红色是什么颜色| 上唇肿胀是什么原因| 8月23日是什么星座| 水手是什么意思| 排骨炖什么汤止咳润肺| 花指什么生肖| 杭州五行属什么| hitachi是什么品牌| 什么泡水喝治口臭| dos是什么| 虫离念什么| 医院总务科是干什么的| a股是什么| 3个土念什么| 细菌性阴道炎有什么症状| 洗牙有什么危害吗| 神经痛什么原因引起的| 股票加杠杆是什么意思| 腰扭伤了挂什么科| 1994年属狗是什么命| 诺言背叛诺言是什么歌| 脑多普勒检查什么| 银耳汤有什么功效| 1969年是什么年| 富屋贫人是什么意思| 11月9号是什么日子| 肛门坠胀吃什么药最好| 胎毒是什么意思| 叫床是什么| 恺字五行属什么| 饱和脂肪是什么| 暗代表什么生肖| 胆囊腺肌症是什么病| 五月二十一号是什么星座| 肠胃胀气是什么原因| 情花是什么花| 肝内囊性灶什么意思| 财神叫什么名字| 玛瑙对人体有什么好处| 梦见抬棺材是什么意思| bld是什么意思| 梦见自己拉了好多屎是什么意思| 产奶速度慢是什么原因| 前列腺钙化是什么原因引起的| 全托是什么意思| 灭吐灵又叫什么名字| 咳嗽能吃什么水果| 肠憩室是什么意思| 肾结晶是什么病| 泡脚对身体有什么好处| 口腔溃疡为什么那么痛| 肝郁气滞血瘀吃什么药| 拉肚子应该吃什么| 灵芝煮水喝有什么功效| 大学学什么| 世界大战是什么意思| 情人节送什么礼物好| 眉什么眼什么| 励精图治是什么意思| 什么是木乃伊| 2021年属什么| 心脾两虚是什么意思| 脸容易红是什么原因| 酝酿是什么意思| 看淋巴挂什么科室| 阿迪达斯是什么牌子| 胎儿脉络丛囊肿是什么原因引起的| 杏林春暖的杏林指什么| 学生证件号码是什么| 头孢主要治什么病| 肝腹水是什么症状| 东北易帜是什么意思| 涧什么字| 皮角是什么病| 巽是什么意思| 土人参长什么样| 梦见自己拉了好多屎是什么意思| 全身检查挂什么科| 大骨节病是一种什么病| 血漏是什么病| 金蝉子是什么佛| 健康证办理需要什么材料| 平五行属什么| 无精打采是什么生肖| 痔疮可以吃什么| 孔雀男是什么意思| 小便绿色是什么原因| 咳嗽什么东西不能吃| 奇葩是什么意思| 宁五行属什么| 小孩手指脱皮是什么原因| 做梦梦见兔子是什么意思| 仓鼠可以吃什么| 十月九号什么星座| 郑和是什么族| 丑什么生肖| fcm是什么意思| 内痔是什么样的图片| 护士学什么专业| 3月是什么星座| wis是什么牌子| 什么的街道| 肚脐周围痛是什么原因| 慢阻肺是什么病| 摇粒绒是什么面料| 血清谷丙转氨酶偏高是什么意思| 断背山讲的是什么故事| 3月7日是什么星座| 为什么要小心吉普赛人| 上窄下宽的脸型适合什么发型| 什么牌子好| sec是什么单位| 怀孕有什么现象| c1开什么车| 和谐是什么意思| 剪切是什么意思| 送向日葵代表什么意思| 肝火旺失眠吃什么药| 皮肤黑穿什么颜色的衣服好看| 单脱是什么意思| 怀孕会出现什么状况| 头晕到医院看什么科| 2009年是什么生肖年| 睡觉被憋醒是什么原因| 被褥是什么| 一会硬一会软什么情况| 老当益壮是什么意思| 44什么意思| 隐翅虫吃什么| 毛孔大什么原因形成的| 蝴蝶骨是什么| 梦见黑狗是什么意思| 后脑袋疼是什么原因| 火加木是什么字| 女性腋臭什么年龄消失| 2月2号什么星座| 曾舜晞是什么星座| 蝴蝶什么意思| 湿疹是什么样的图片| 葡萄和什么不能一起吃| 扁桃体发炎能吃什么水果| 裘是什么意思| arr是什么意思| 被电击后身体会有什么后遗症| n表示什么| 靶向治疗是什么意思| 胸小是缺少什么营养| 蓝得什么| 血肌酐高吃什么食物| 莱赛尔纤维是什么面料| 狗狗拉血是什么原因| 一什么眼镜| 3个火读什么| 什么玉最值钱| 孕早期胎停有什么症状或征兆吗| 脊椎和脊柱有什么区别| 阴道口发白是什么原因| 皮肤白斑是什么原因| 传染性单核细胞增多症是什么病| 1999属什么| 为什么阴天紫外线更强| 病种是什么意思| 一棵树是什么品牌| 吃红糖有什么好处和坏处| 八月17号是什么星座的| 水嘴是什么| 肾气虚吃什么中成药| 晚点是什么意思| 什么情况下做肾穿刺| 田园生活是什么意思| 阳气不足吃什么中成药| 北豆腐是什么| 幼儿急疹吃什么药| 电动伐木锯什么牌子好| 荔枝吃了有什么好处| animals什么意思| 秦昊的父母是干什么的| 心里堵得慌是什么原因| 有情人终成眷属是什么意思| 癞蛤蟆吃什么| 什么叫有机蔬菜| 什么是眼底病| 心水是什么意思| 什么腔什么调| 给孕妇送什么礼物好| 痛经什么原因| 什么可以补肾壮阳| 胃酸过多吃什么食物好| 窗口期什么意思| 给事中是什么官| 眼睛散光和近视有什么区别| 做梦梦见死去的亲人是什么意思| 6岁儿童为什么会长腿毛| 籽料是什么意思| 淮山跟山药有什么区别| 蔓越莓是什么| 虫至念什么| 咳嗽有白痰吃什么药| 吐黑水是什么原因| 拍身份证穿什么颜色衣服| 浣碧什么时候背叛甄嬛| 表哥的儿子叫什么| 头疼头胀是什么原因| 什么炒蛋好吃| 胸部疼痛挂什么科| 寒湿吃什么中成药| 暖气是什么意思| 宫颈管短有什么症状| 肾痛是什么原因| 湿气重不能吃什么食物| 胸闷喘不上气什么原因| 牙齿什么时候换完| 拉风是什么意思| 血脂高不能吃什么食物| 为什么蛋皮会痒| 不是你撞的为什么要扶| 家贼是什么生肖| 化疗后白细胞低吃什么补得快| 尿急尿痛吃什么药| 一切就绪是什么意思| 无声无息是什么意思| 淘米水洗脸有什么作用与功效| 胰腺检查做什么检查| 隐翅虫咬了用什么药| 开心是什么意思| 轴位什么意思| 视网膜脱落是什么原因引起的| 同房是什么| 皮卡丘站起来变成了什么| 牙龈肿痛吃什么药最好| 高血压吃什么药好| 庆帝为什么杀叶轻眉| 收官之作什么意思| 乙肝五项45阳性是什么意思| 什么样的秋天| 日有所思夜有所梦是什么意思| prich是什么牌子| 女生排卵期有什么症状| 汆水是什么意思| 食物中毒吃什么解毒最快| 山东有什么特产| 百度
工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->通信电路图->通信综合电路图->浅析基于Modelsim FLI接口的协同仿真

“记者”暗访平安人的服务现场,结

发布人:不爱吃窝瓜 时间:2025-08-04 收藏
百度   中国共产党是高度重视理论武装的党,党的先进性首先来源于理论指导的先进性。

介绍了如何利用modelsim提供的FLI(Foreign Language Interface)接口对VHDL设计文件进行协同仿真,给出了协同仿真的意义以及协同仿真的程序结构和系统结构。

1 前言

协同仿真就是利用仿真工具提供的外部接口,用其它程序设计语言(非HDL语言,如c语言等)编程,用辅助仿真工具进行仿真。Modelsim提供了与c语言的协同仿真接口。以Windows平台为例,用户可通过modelsim提供的c语言接口函数编程,生成动态链接库,由modelsim调用这些动态链接库进行辅助仿真,如图1所示。



图1 协同仿真示意图

2 Modelsim及FLI接口介绍

Modelsim是Model Technology(Mentor Graphics的子公司)的HDL硬件描述语言仿真软件,可以实现VHDL、Verilog以及VHDL-Verilog混合设计的仿真。除此之外,Modelsim还能够与c语言一起对HDL设计文件实现协同仿真。同时,相对于大多数的HDL仿真软件来说,Modelsim在仿真速度上也有明显优势。这些特点使Modelsim越来越受到EDA设计者、尤其是FPGA设计者的青睐。

Modelsim的FLI(Foreign Language Interface)接口,提供了c语言动态链接程序与仿真器的接口,可以通过c语言编程对设计文件进行辅助仿真。

3 协同仿真系统的结构及意义

Modelsim与c语言协同仿真,一是用于产生测试向量,避免手工编写测试向量的繁琐;二是可以根据程序计算结果自动检查仿真结果正确与否;三是模拟其它模块(如RAM)的功能,在系统级对设计文件仿真。实践中一般是把一和二结合在一起,用程序产生仿真向量,一方面输出给设计文件作为输入,另一方面由程序本身对该向量计算,把得到的结果与仿真器的输出结果比较,检查逻辑是否正确,如图2所示。至于模拟功能,现在已经有一些通用芯片的模拟程序,如denali可以模拟RAM的功能。另外,用户也可以利用modelsim提供的编程接口自己模拟一些芯片的行为,然后与设计文件连接到一起仿真。

图2 语言测试程序对VHDL设计文件的协同仿真结构图

4 C语言对VHDL设计文件的协同仿真

4.1 构成框图

仿真文件的构成如图3所示,包括HDL文件和动态链接库(即c程序)。图中c程序对应的VHDL文件要负责声明对应的动态链接库文件名及初始化函数,另外还可以给出一些调用参数。动态链接中用到的输入输出信号也要在对应的VHDL文件中声明。

图3 仿真文件构成示意图

例如,假定有一个DLL文件名为sim.dll,对应的初始化函数为sim_init,有输入信号in1、in2,输出信号out1、out2,可以这样编写对应的VHDL文件

(sim.vhd):

library ieee;

use ieee.std_logic_1164.all;

entity sim is

port(

in1:in std_logic;

in2:in std logic;

out1:out std_logic;

out2:out std_logic;

);

end entity sire;

architecture dll of sim is

attribute foreign :string;

attribute foreign of dll :architecture is "sim_init

sim.dll”

begin

end;

仿真时,仿真器对顶层的HDL文件进行仿真,并根据各VHDL文件的动态链接库声明来调用、执行相应的动态链接库。

4.2 动态链接库的程序结构

利用modelsim仿真时,可根据VHDL文件的声明,调用DLL文件(如sim.dll)。在VHDL文件中已经给出了调用文件(sim.dll)和初始化函数名(如sim_init),modelsim根据这些信息,调用sim.dll中的sim_init函数,完成初始化工作。初始化包括:

①初始化全局变量;

②设置VHDL输入输出信号与c程序变量的对应关系;

③设置输出信号的一些初始状态(mti_ScheduleDriver);

④设置在仿真器重新仿真(restart)和仿真器退出仿真(quit)等情况下执行的一些函数(mti_AddRestartCB和mti_AddQuitCB等),如释放动态申请内存等;

⑤设置敏感表,给出在某些信号发生变化(如时钟上升沿等)时执行的函数。

⑥其它。

C程序的设计步骤如下:

(1)包含头文件,包括c程序常用的一些头文件和modelsim给出的外部语言接口头文件mti.h。Modelsim给出的外部接口函数说明、类型定义等都在mti.h中。

(2)定义自己的结构体,这一点主要是为了编程方便,例如输入输出信号对应的变量在各函数中基本上都会用到,可以把这些变量定义成一个结构,便于参数传递。

(3)编写初始化函数


初始化函数的定义为:

init_func(mtiReginoIdT region,char *param,

mtiInterfaceListT *generics,mtiInterfaceListT *ports)

各参数的意义可以参阅modelsim用户手册。

下面结合上面给出的初始化函数要完成的任务进行详细说明。

a.初始化全局变量(略)

b.设置VHDL输入输出信号与c程序变量的对应关系。这是通过调用mti_FindPort函数实现的。mti_FindPort函数定义为:

mfiSignalIdT mti_FindPort(mtiInterfaceListT *list,char *name);

例如,定义输入输出信号对应的结构ip:

PortStruct ip;

就可以用:

ip_in1=mti_FindPort(ports,"in1");

来实现输入信号in1与变量in1的对应关系。

对输出信号来说,它的目的是产生驱动。因此,这些变量(out1和out2)除了要找到对应的输出信号外,还要驱动这些信号。对信号的驱动可以通过调用mti_CreateDriver函数来实现。该函数的定义为:

mtiDriverIdT mti_CreateDriver(mtiSignalIdT sig);

由于这些变量一般只用于对外驱动,因此可以简单写成下面的形式:

ip.out1 = mti+ CreateDriver(mti_FindPort(ports,"out1"));

C.调用mti_ScheduleDriver函数,设置输出信号的初始状态。mti_ScheduleDriver函数的定义为:

void mti_ScheduIeDriver(mtiDriverIdT driver,long value,mtiDelayT delay,mtiDriverModeT mode);

其中,driver是输出信号对应的变量名,如ip.out1和ip.out2;value是要设置(驱动)的值,如高电平('1',对应value为3)、低电平('0',对应value为2)、高阻('z',对应value为4)、未赋值('U',对应value为0)等等;delay是从当前时间开始到把信号驱动成给定值(value)的等待时间,单位与仿真器当前使用的最小时间单位相同;mode为信号模式,有两个值可供选择:MTI_INERTIAL或者是MTI_TRANSPORT,分别对应于标准VHDL语言的INERTIAL和TRANSPORT。例如,设置信号out1的初始状态为低电平:

mti_ScheduleDriver(ip.out1,2,0,MTI_INERTIAL);

d.设置在仿真器重新仿真(运行命令restart)或退出仿真(运行命令quit-sim)等情况下调用的函数。这一部分主要是为了释放内存或者保存当前状态等。以restart为例,假设在程序中用malloc申请了存储空间buf,在仿真器"restart"时需要释放,就可以用以下的函数调用来注册:

mti_AddRestartCB(free,buf);

注册后,当仿真器运行命令restart时就会调用free(buf)。

其它一些函数可以参照modelsim的用户手册这里不再详述。

e.设置敏感表,给出在某些信号发生某些变化时(如时钟上升沿等)执行的函数。例如,在输入信号in1发生变化时,要执行函数in1_change(in1_change为用户定义好的函数),可以这样定义:

processed proc;

proc=mti_CreateProcess("P_in 1 change",in1_change,&ip);

mti_Sensitize(proc,ip.in1,MTI_EVENT);

也就是说,先创建进程,然后设置敏感表。当满足敏感表的条件时,仿真器就会执行该进程。

mti_CreateProcess函数的定义为:

mtiProcessldT mti_CreateProcess(char *name,mtiVoidFuncPtrT func,void * Param);其中,name是将要在仿真器窗口中显示的名称;func是要执行的函数;后面的param是要传给func的参数。mti_Sensitize的定义为:

void mti_Sensitize(mtiProcessIdT proc,mtiSignalIdT sig,mtiProcessTriggerT when);

其中,proc为调用mti_CreateProcess的返回值;sig为信号名,即VHDL文件的输入输出信号对应于C程序的变量;when可以取MTI_EVENT或者MTI_ACTIVE两种值。

4.3 C程序的编译

对Windows平台,采用的编译器是MicrosoftVisual C++,并用如下的命令进行编译:

cl -c -I app.c

link -dll -export: app.obj

modeltech.lib

上面的是modelsim的安装目录,是c程序的初始化函数名,如我们给出的sim.c的sim_init。编译之后就可以生成.dll文件。

仿真向量是用c语言还是用HDL直接产生,要视设计者的应用而定,选取最简单的方式。在大多数情况下,用c语言和HDL联合生成测试向量会更方便些。

5 结论

利用Moelsim的FLI功能,用c语言对所设计的模型进行功能验证,可以加大验证代码的覆盖率,减少验证代码的复杂度,加快验证的速度,缩短设计周期,可以更好的验证系统的通用性。另外,Modelsim的FLI功能使硬件描述语言(Verilog,VHDL)与c语言紧密结合在一起,为设计人员提供了更广阔的验证平台,更方便的验证方法。





评论

技术专区

贡菜是什么菜做的 日本投降是什么时候 孩子鼻子出血什么原因造成的 白凉粉是什么原料做的 生化全项包括什么
十二月二十号是什么星座 繁什么似锦 hpv31阳性是什么意思 什么是胆固醇 儿童经常头晕什么原因导致的
什么叫做凤凰男 孙悟空的原名叫什么 痛风不能吃什么水果 免疫球蛋白高说明什么 名落孙山是什么意思
紫癜是一种什么病严重吗 双皮奶为什么叫双皮奶 宫颈管短有什么症状 含羞草为什么害羞 拉墨绿色的大便是什么原因
女生月经迟迟不来是什么原因hcv9jop2ns3r.cn 锁骨是什么位置xianpinbao.com 我国的国花是什么hcv7jop6ns6r.cn 黎字五行属什么hcv7jop6ns6r.cn 七月13号是什么星座hcv8jop4ns2r.cn
阿哥是什么意思clwhiglsz.com mgd是什么意思hcv8jop4ns0r.cn ads是什么意思hcv9jop0ns6r.cn 提刑官相当于现在什么官0735v.com 心口疼挂什么科hcv8jop3ns9r.cn
口苦口干吃什么药最好hcv8jop5ns3r.cn 眼白有黄斑是什么原因inbungee.com 长子是什么意思hcv9jop1ns4r.cn lhrh是什么激素hcv8jop7ns1r.cn 宋美龄为什么没有孩子hcv8jop6ns6r.cn
乙醇对人体有什么伤害hcv9jop4ns7r.cn 血钾低吃什么hcv9jop6ns6r.cn 心肌供血不足吃什么药hcv8jop7ns4r.cn forever21是什么牌子ff14chat.com 皱褶什么意思hcv8jop6ns5r.cn
百度