linux环境下vhdl编译系统设计

linux环境下vhdl编译系统设计

ID:22612146

大小:56.00 KB

页数:5页

时间:2018-10-30

linux环境下vhdl编译系统设计_第1页
linux环境下vhdl编译系统设计_第2页
linux环境下vhdl编译系统设计_第3页
linux环境下vhdl编译系统设计_第4页
linux环境下vhdl编译系统设计_第5页
资源描述:

《linux环境下vhdl编译系统设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Linux环境下VHDL编译系统设计

2、第1内容显示中luner:T_ARCHITECTUREIDENTIFIERT_OFIDENTIFIERT_IS{blkpush();cellno;$2->id┃_class="architecture";‥‥‥};通过语法分析和语义分析,VHDL源描述即被转换为中间数据结构文件CDFG.5符号表管理符号表是一种数据结构,用于保存源语言结构的各种信息,主要用于维护名字的作用范围及与其相联系的属性信息。VHDL编译系统对符号表的操作贯穿于整个编译过程,在词法和语法分析阶段收集信息放人符号表,在语义分析和中间数据结构生成阶段要不断对符号表进行访问并进行信息的

3、增删。符号表中信息项包括:名字、类别、数值类型、模式、行号、列号、指向下一符号的指针等。数据结构如下:structsymtsb{char*id_name;char*id_class;char*data_type;intmode;intlineno;intcolumnno;structsymtab*next;‥‥‥};VHDL编译系统对符号表的操作非常频繁,因此,对符号表的组织有很高的要求,必须做到查找速度快、便于维护和操作、具有良好的灵活性等。基于此,采用哈希表(也叫散列表)来组织符号表。哈希表是根据关键码值直接进行访问的数据结构,它使数据的存储和查找消耗的时间大大降低,可以看作常数时间。

4、取哈希表长为质数211,基于除留余数法,并结合移位运算来实现;发生冲突时,使用链地址法处理。哈希函数为:#definehashsize211inthashfunc(char*id){intI;unsignedh=0;intleng=strle(id);for(i=0;i<leng;i++;)}h=(h<<4)+id[i];}Returh%hashsize;}对每个要操作的字符串,对其字符逐位移位相加,将得到的值与哈希表长进行除留余数,即可得到符号表中的一项。6出错处理编译系统发现错误时应该能够报告错误,并继续进行分析。对于词法错误,在词法分析器lex源程序识别规则的最后加人特殊规则,用以处

5、理前面所有规则都不能识别的单词,并将它们的整数值传回给yylex()。即将词法分析中的错误传到语法分析中一起处理,实现词法错误与语法错误平等对待。对于语法错误,yacc通过使用出错产生式的形式进行错误处理。用户可以把形式为:A->errora的出错产生式加入语法中。当语法分析器遇到这种错误时,它从栈中弹出状态,直到发现栈顶状态的项目集合含有形如A->errora的项目为止,然后语法分析器会接收error,就如同对待其它符号一样。例如:entity_former:T_ENTITYIDENTIFIERT_IS┃T_ENTITYIDENTIFIERerror{Pritf("line%

6、d:",lineno);Yyerror("scareof'is'");};7结语针对选定的VHDL语言子集,设计了VHDL编译系统,接受VHDL语言源描述,生成用于后续高层次综合系统的中间数据结构CDFG。采用redhat9.0linux开发,使用其中的lex和yacc工具并结合C语言,从而减小了系统的设计难度,缩短了开发周期。对多个VHDL程序实例进行了测试,已经实现了基本功能。鉴于VHDL语言的复杂性,还有不完善之处,仍须进一步完善和修改。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。