APP下载

利用TCL与Qt实现IP核图形界面的设计

2018-01-23董志丹

电子与封装 2018年1期
关键词:程序代码图形用户界面控件

李 卿,惠 锋,董志丹

(无锡中微亿芯有限公司,江苏无锡 214072)

1 引言

随着 FPGA(Field-Programmable Gate Array)的发展,芯片的性能越来越强、规模越来越大、开发周期越来越长,使得芯片设计面临一系列新的问题,如设计质量难以控制,设计成本越来越高等,IP(Intelligence Property)技术则解决了芯片设计所面临的难题。IP是指用来生成ASIC和PLD的逻辑功能块,又称IP核(IP Core)[1]。设计者可以重复使用已经设计并经过验证的IP核,从而更专注于整个系统的设计,提高设计的效率和正确性,降低成本。因此,IP核在电子设计自动化(Electronic Design Automation,EDA)工具推广和使用中扮演着举足轻重的角色。该文重点讲述IP核图形用户界面(GUI)的实现。

友好、易用的图形用户界面在产品推广时起着至关重要的作用。目前,编程人员多使用VC++、JAVA、Qt等语言实现Windows下的GUI应用[2]。但是作者在程序开发过程中发现,IP Core种类繁多,每个IP对应一个界面,功能虽类似但又有独特性,且需进行文件处理,此时完全使用代码编写来实现GUI设计与开发并非明智之举。一方面编程人员代码编写任务比较繁琐,每个界面都需要大量代码来实现;另一方面,界面响应处理完全由代码实现,无论是修改界面外观还是响应处理都需要重新编译代码再发布,不利于维护;此外,文件的处理并非上述编程语言的优势。因此,根据项目特点选择合适的开发语言与实现方式是一个关键,有助于提高开发效率并减少维护成本。

本文采用工具命令语言(Tool Command Language,TCL)实现与Qt GUI的交互,将界面控件的状态信息等放置在TCL文件中配置,当用户想修改控件之间的逻辑关系时,只需修改TCL控制文件即可,不需要修改程序代码,灵活方便,极大地减少了代码维护工作,从而达到动态配置的效果。

2 TCL与Qt

TCL指工具命令语言,功能强大,基础结构和语法非常简单,易于学习和掌握,主要有如下特点[3]:(1)TCL是一种解释执行的脚本语言,支持变量、循环、过程等使用的编程元素;(2)TCL提供了丰富的C语言调用接口,可以很容易地嵌入至C语言程序中;(3)TCL是一个开放式的开发工具,提供了丰富的功能扩展函数,允许用户编写新的命令解释程序,加入TCL的解释器中。

Qt是一个多平台的C++图形用户界面应用程序框架,主要有如下特点[4]:(1)Qt提供了一组强大、容易理解的GUI类,运行得更快;(2)Qt特有的信号和槽机制构造了一个强大的部件编程机制,更易使用;(3)Qt图形设计器(Qt Designer)是一个所见即所得的全方位GUI构造器,利用该设计器,开发者可以摆放各种Qt控件构造图形用户界面,而不需要编写一行代码。

由于TCL提供了与C的接口函数,所以可以在Qt应用程序中调用TCL库函数,执行TCL的命令或脚本,具体流程如图1所示[5]。

图1 TCL执行流程

3 设计实现

每个IP对应一个界面,因此,为达到设计的简洁性与灵活性,摒弃传统的编写代码实现界面功能的方式,采用Qt与TCL交互的方式来实现。每个IP设计对应的界面文件(.ui)和控制文件(.tcl),其中界面文件用于IP界面显示,控制文件管理界面控件的属性、逻辑关系、IP文件生成,它们之间通过Qt程序代码进行管控,根据用户需求执行相应代码文件。此种设计方式可以将文件设计与Qt代码编写相分离,分配给不同的工程师负责,术业有专攻,各司其职。当界面设计修改时只需修改界面文件和控制文件,无需修改程序代码,方便快捷地响应用户需求,从而将开发人员从繁琐的编码修改工作中解脱出来。Qt与各文件之间的关系如图2所示。

图2 Qt与各文件之间的关系

整个IP Core主要分为UI界面文件设计、TCL控制文件设计、Qt程序代码,下面分模块进行阐述。

3.1 UI界面文件设计

UI文件采用Qt图形设计器进行设计,它为用户提供可视化的界面设计,简单、方便、快捷,不需编写代码即可实现界面的设计,生成对应的.ui文件。若想修改外观界面,直接更改该UI文件即可,不需更改程序代码,达到动态配置的效果,极大地减少代码的编程工作。

UI界面主要由两部分组成:QStacked Widget和QTab Widget。QStacked Widget主要用于显示控件界面,可以分多页展示,设计师根据需要摆放控件;QTab Widget主要用于显示IP模型图和总结信息,模型图在Qt代码中进行绘制。此外,UI中控件通过名称与TCL文件中控制信息进行关联,因此设计UI时控件名称要与TCL文件中的一致。

为保证界面大小的自适应,所有控件放置在布局管理器中,如图3所示(以DCM为例)。

图3 UI设计界面

3.2 TCL控制文件设计

TCL是一个开放式的脚本语言,功能强大、可快速学习、快速开发,因此控制文件采用TCL编写,通过该文件可实现动态响应用户配置、生成模块代码。每个IP核有自己对应的TCL控制文件,响应不同的IP即调用不同的控制文件。当用户想修改控件之间的逻辑关系时,只需修改TCL控制文件即可,不需要修改程序代码,灵活方便。

TCL控制文件与UI界面文件中的控件通过名称进行关联,从而达到动态控制界面状态的效果。TCL控制文件主要包括控件属性设置、Pin属性设置、控制函数、IP文件生成等。

(1)控件属性设置,主要用于UI界面中控件属性值的初始化,如设置控件的值、值类型、使能状态、是否显示、参数值列表等,格式如下:

(2)Pin属性设置,主要用于绘制IP模型图,属性值主要包括Pin名称、方向、类型、使能状态、是否显示、宽度范围等,格式如下:

图4 Qt代码流程

(3)控制函数,用于设置各控件值、控制UI界面各控件之间的逻辑关系等,从而达到动态控制界面状态的效果。主要包括各控件的更新函数、校验函数以及管脚更新函数 (update_pins)、最终状态函数(finalize)。

(4)IP文件生成,根据用户配置生成对应的IP文件。

此外TCL文件还定义了控件的Get与Set方法,Get方法用于获取界面控件值,Set方法用于设置界面控件值,从而实现TCL与界面的交互。

3.3 Qt程序代码

Qt代码将UI界面文件和TCL控制文件有效地连通起来。Qt加载UI文件用于显示UI界面,执行TCL控制文件用于配置界面参数信息。所有的参数都在程序中集中管理,用户操作UI界面时首先更改Qt的参数信息,然后执行TCL中的函数更改相应参数值与逻辑关系,TCL文件中通过Get方法获取参数数据,而TCL文件中若更改参数信息,则通过Set方法与程序中的参数信息同步,最后更新UI界面,从而实现动态响应用户配置参数。整体工作流程如图4所示。

IP界面主要由两部分组成,一部分为模型图显示,一部分为控件显示。Qt程序加载设计好的UI文件,首先查找QTab Widget控件,若该控件存在则根据获取的所有Pin信息绘制IP模型图,若该控件不存在则不需绘制IP模型图;其次根据TCL控制文件中各控件属性值显示与配置QStacked Widget控件,从而实现界面初始化,在更新TCL控制文件数据时,调用各控件的 update_xx、finalize_xx、validate_xx 函数 (xx对应控件的名称),以及update_pins、finalize函数,界面显示流程如图5所示。

而当用户操作UI界面时,控件响应用户绑定的信号槽,更新参数数据,并调用TCL函数更新数据与逻辑关系,最后重新绘制UI界面,如图6所示。

图5 界面显示流程

图6 响应用户界面流程

3.4 程序执行界面

Qt程序代码设计完毕即可执行该程序。用户选择要查看的IP,程序自动加载该IP的配置文件,即UI界面文件和TCL控制文件,并显示该IP图形界面。用户根据需求配置该IP属性并生成对应的IP核,程序执行界面如图7所示(以DCM为例)。

图7 程序执行界面

4 结论

该文实现了一种Qt+TCL的界面实现方式,由于IP核种类繁多且又有独特性,因此摒弃传统编写代码实现的方式,采用配置文件的方式,每个IP设计对应的界面文件和控制文件,通过Qt代码进行管控。当用户想修改界面设计时,只需修改界面文件和控制文件即可,不需要修改与编译程序代码;此外,当扩展用户IP时,也只需编写对应的界面文件与控制文件,非常灵活方便,易于扩展与维护工作,从而达到动态配置的效果。

[1]P Chauhan,EM Clarke,Y Lu,D Wang.Verifying IP-core based system-on-chip designs[C].IEEE International Asic/soc Conference,1999:27-31.

[2]万连文.基于XML的图形用户界面构建平台的研究与实现[D].中国地质大学,2008.

[3]John K,Ousterhout Ken Jones.Tcl/Tk入门经典 (第2版)[M].北京:清华大学出版社,2010.

[4]蔡志明,卢传富,李立夏.精通Qt4编程(第2版)[M].北京:电子工业出版社,2010.

[5]杨怡玲,王换招,管旭东.利用Tcl/Tk实现X Windows下的GUI[J].微电子学与计算机,1999,1.

[6]李杰.IP核验收平台搭建与图形用户界面开发[D].哈尔滨:哈尔滨工业大学,2015.

猜你喜欢

程序代码图形用户界面控件
图形用户界面外观设计专利保护问题探析——以“奇虎诉江民案”为例
关于.net控件数组的探讨
计算机网络信息安全未来发展趋势
浅谈图形用户界面的保护
图形用户界面法律保护问题与对策
基于图元装接模式由程序流程图自动生成源代码
ASP.NET服务器端验证控件的使用
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
MiniGUI在基于OMAP5912开发板上的移植
嵌入式系统中程序的优化策略