一种电路图特征字符串的编码方法
技术领域
本发明涉及一种电路图的编码方法,具体是一种电路图特征字符串的编码方法,属于电子技术和计算机技术领域。
背景技术
模拟电子技术是电子信息、通信和电气类专业最重要的技术基础课程之一,其旨在培养学生对典型模拟电路的分析能力和设计能力。对于分析能力的培训,相对容易实现,而对于设计能力的培训,则实现比较困难。主要原因在于,教材及其配套的练习系统提供的练习题多为电路分析题目,几乎没有电路设计题目,因而,学生平时训练多是进行电路分析的训练,很少进行电路设计的练习。为了培养学生对典型模拟电路的设计能力,有必要开发一个模拟电路设计练习系统,提供给学生作电路设计练习之用。
在模拟电路设计练习系统的开发过程,面临最大的技术困难是:如何对学生所画的电路图与系统提供的标准电路图进行比对,从而判别学生所设计电路的对错。
电路图隐含电路的两个要素:电路拓朴和电路参数。电路拓朴指电路元件及其电气连接关系,电路参数指电路元件的参数值。图形不同的电路图,若隐含的电路拓朴和电路参数一致,则实质为同一电路,只是表现形式不同,反之,则为不同的电路。若是人工比对电路图,比较容易实现,因为人脑可过滤电路图形式上的干扰,只专注比对电路图的电路拓朴和电路参数是否一致;若让计算机程序完成比对,需要设计一个合适的数据结构,用来存放从电路图提取的电路拓朴和电路参数,然后通过比对数据结构,完成电路图比对。而关于模拟电路电路图的编码比对技术,国内还未见有相关文献报道。
发明内容
为了解决上述问题,本发明提出了一种电路图特征字符串的编码方法,该方法可应用于模拟电路设计练习系统,实现标准电路与学生所设计电路的比对。
本发明的技术思路为:设定编码与排序规则,将二维电路图形影射成一维字符串,并把所得一维字符串定义为电路图特征字符串;通过提取、比较两电路的电路图特征字符串,可判断两电路是否一致,若两电路的电路图特征字符串完全一致,表明两电路图为同一电路,否则,表明两电路为不同的电路。
本发明所采用的技术方案为:
一种电路图特征字符串的编码方法,包括以下步骤:
(1)引脚特征字符串编码:遍历电路图中的所有元件,对每一个元件的每一个引脚,按引脚特征字符串编码规则生成引脚特征字符串;
(2)支路等效:对电路图中包含有两个或两个以上元件的每一个支路,分别用一个虚元件对支路中的元件进行等效,再按虚元件引脚特征字符串编码方法分别生成每一个虚元件的引脚特征字符串;
(3)节点特征字符串编码:遍历电路图中的所有节点,对每一节点,由其连接的元件引脚的引脚特征字符串组成一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾串起来,形成此节点的节点特征字符串;
(4)电路图特征字符串编码:由全部节点的节点特征字符串组成一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾串起来,形成电路图特征字符串。
步骤(1)所述的引脚特征字符串编码规则为:
引脚特征字符串=元件名+[元件参数]+[引脚名]
其中,元件名用以标识元件的类型,如“R”、“LED”、“C”、“OPA”分别为电阻、发光二极管、电容和运放的元件类型标识;[元件参数]用以标记有参数值的元件的参数值,如“100K”、“10uF”分别表示电阻阻值和电容容量,此项为选择项,对于无参数的元件,此项可省略;[引脚名]用以标记有极元件的引脚名称,如“P”和“N”分别标记正极(或正相输入端)和负极(或反相输入端),“b”、“c”、“e”分别标记三极管的基极、集电极和发射极,此项为选择项,对于无极元件,如电阻,此项可省略。
步骤(2)所述的虚元件引脚特征字符串编码方法包括以下步骤:
1)随机设定虚元件的一端引脚为正引脚,另一端引脚为负引脚,正引脚指向负引脚方向定为顺序方向;
2)按顺序方向,由构成虚元件的各元件的引脚特征字符串组成引脚特征字符串向量;
3)提取引脚特征字符串向量的单数分量组成一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾串起来,形成虚元件的正引脚特征字符串;
4)提取引脚特征字符串向量的双数分量组成另一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾串起来,形成虚元件的负引脚特征字符串。
步骤(3)和步骤(4)所述的字符串排序规则为:
按字符串的长度排序,长字符串在前,短字符串在后;若两字符串长度相同,则依次比较两字符串每一字符的ASCII码值,直至两字符串的某一位字符的ASCII码值不等,然后将ASCII码值大的字符串排在前。
本发明的电路图特征字符串的编码方法可用于模拟电路设计练习系统,实现标准电路与学生所设计电路的比对。模拟电路设计练习系统内含有标准模拟电路,练习时,练习系统删除掉标准电路元件间的连接线,只保留元件,并把元件的摆放方向和摆放位置重新随机设置;学生根据题目的设计要求,重新摆放元件和添加连接线;学生完成设计后,系统根据本发明的电路图特征字符串的编码方法,通过提取、比较标准电路图和学生所设计电路图特征字符串,判断学生所设计电路的对错。
附图说明
图1练习系统内置的标准LED驱动电路。
图2学生设计的LED驱动电路例1。
图3学生设计的LED驱动电路例2。
图4练习系统内置的标准10倍交流电压反相比例放大器。
图5学生设计的10倍交流电压反相比例放大器例1。
图6学生设计的10倍交流电压反相比例放大器例2。
具体实施方式
实施例一:以下为结合图1~图3对本发明的应用进行详细说明。
图1为模拟电路设计练习系统内置的标准LED驱动电路,练习时,练习系统删除电路元件间的连接线,只保留元件,并把元件摆放方向和摆放位置重新随机设置;学生根据题目的设计要求,重新摆放元件和添加连接线,图2和图3分别为不同学生完成的设计实例。
图1电路图特征字符串的编码步骤如下:
(1)引脚特征字符串编码:遍历电路图中的所有元件,对每一个元件的每一个引脚,按引脚特征字符串编码规则生成引脚特征字符串,如表1所示。
表1:图1电路的元件的引脚特征字符串列表
(2)支路等效:对电路图中包含有两个或两个以上元件的每一个支路,分别用一个虚元件对支路中的元件进行等效,再按虚元件引脚特征字符串编码方法分别生成每一个虚元件的引脚特征字符串。
图1电路的D1和R2所在支路包含两个元件,需用一个虚元件进行等效,再按虚元件引脚特征字符串编码方法生成此虚元件的引脚等征字符串,过程如下:
1)设定虚元件接Q1集电极的引脚为正引脚,接+5V电源端的引脚为负引脚,正引脚指向负引脚方向定为顺序方向;
2)按顺序方向,由构成虚元件的元件D1、R2的引脚特征字符串组成引脚特征字符串向量(“LEDN”,“LEDP”,“R100”,“R100”);
3)提取此引脚特征字符串向量的单数分量组成字符串集{“LEDN”,“R100”},再按字符串排序规则对此字符串集的字符串进行排序,得{“R100”,“LEDN”},最后把此字符串集排序好的所有字符串从头到尾用“/”串起来,形成虚元件的正引脚特征字符串“R100/LEDN”;
4)提取此引脚特征字符串向量的双数分量组成字符串集{“LEDP”,“R100”},再按字符串排序规则对此字符串集的字符串进行排序,得{“R100”,“LEDP”},最后把此字符串集排序好的所有字符串从头到尾用“/”串起来,形成虚元件的负引脚特征字符串“R100/LEDP”。
(3)节点特征字符串编码:遍历电路图中的所有节点,对每一节点,由其连接的元件引脚的引脚特征字符串组成一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾串起来,形成此节点的节点特征字符串。
例如Q1基极与电阻R1相连的节点,组成的引脚特征字符串集为{“NPNb”,“R10K”},按字符串排序规则对此字符串集重新排序,得{“R10K”,“NPNb”},将此字符串集的所有字符串用“-”号串起来,得此节点的节点特征字符串“R10K-NPNb”。
再例如Q1集电极所在节点,其还连接由R2和D2构成的虚元件的正引脚,组成的引脚特征字符串集为{“NPNc”,“R100/LEDN”},按字符串排序规则对此字符串集重新排序,得{“R100/LEDN”,“NPNc”},将此字符串集的所有字符串用“-”号串起来,得此节点的节点特征字符串“R100/LEDN-NPNc”。
图1电路的全部节点的节点特征字符串如表2所示。
表2:图1电路的节点特征字符串列表
(4)电路图特征字符串编码:由全部节点的节点特征字符串组成一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾用“&”串起来,形成电路图特征字符串。
图1电路图全部节点的节点特征字符串组成的字符串集为
{“R10K-NPNb”,“R100/LEDN-NPNc”,“NPNe-GND”,“R10K-Vi”,“R100/LEDP-VCC5V”}
按字符串排序规则,对此字符串集重新排序,得
{“R100/LEDP-VCC5V”,“R100/LEDN-NPNc”,“R10K-NPNb”,“NPNe-GND”,“R10K-Vi”}
将此字符串集的所有字符串用“&”号串起来,得图1电路图特征字符串
CPS1=“R100/LEDP-VCC5V&R100/LEDN-NPNc&R10K-NPNb&NPNe-GND&R10K-Vi”
对图2电路图,同样方法可得其电路图特征字符串
CPS2=“R100/LEDP-VCC5V&R100/LEDN-NPNc&R10K-NPNb&NPNe-GND&R10K-Vi”
对图3电路图,同样方法可得其电路图特征字符串
CPS3=“R10K/LEDP-VCC5V&R10K/LEDN-NPNc&R100-NPNb&NPNe-GND&R100-Vi”
比较CPS1和CPS2,两者相同,表明两电路完全一致,可判定电路图2设计正确;比较CPS1和CPS3,两者不相同,表明两电路图不同,可判定电路图3设计错误。
实施例二:以下为结合图4~图6对本发明的应用再次进行说明。
图4为模拟电路设计练习系统内置的标准10倍交流电压反相比例放大器,练习时,练习系统删除电路元件间的连接线,只保留元件,并把元件摆放方向和摆放位置重新随机设置;学生根据题目的设计要求,重新摆放元件和添加连接线,图5和图6分别为不同学生完成的设计实例。
图4电路图特征字符串的编码步骤如下:
(1)引脚特征字符串编码:遍历电路图中的所有元件,对每一个元件的每一个引脚,按引脚特征字符串编码规则生成引脚特征字符串,如表3所示。
表3:图4电路的元件的引脚特征字符串列表
(2)支路等效:对电路图中包含有两个或两个以上元件的每一个支路,分别用一个虚元件对支路中的元件进行等效,再按虚元件引脚特征字符串编码方法分别生成每一个虚元件的引脚特征字符串。
图4电路的C1和R1所在支路包含两个元件,需用一个虚元件进行等效,再按虚元件引脚特征字符串编码方法生成此虚元件的引脚等征字符串,过程如下:
1)设定虚元件接输入端Vi1的引脚为正引脚,接运放U1反相输入端的引脚为负引脚,正引脚指向负引脚方向定为顺序方向;
2)按顺序方向,由构成虚元件的元件C1、R1的引脚特征字符串组成引脚特征字符串向量(“C1uF”,“C1uF”,“R1K”,“R1K”);
3)提取此引脚特征字符串向量的单数分量组成字符串集{“C1uF”,“R1K”},再按字符串排序规则对此字符串集的字符串进行排序,得{“C1uF”,“R1K”},最后把此字符串集排序好的所有字符串从头到尾用“/”串起来,形成虚元件的正引脚特征字符串“C1uF/R1K”;
4)提取引脚特征字符串向量的双数分量组成字符串集{“C1uF”,“R1K”},再按字符串排序规则对此字符串集的字符串进行排序,得{“C1uF”,“R1K”},最后把此字符串集排序好的所有字符串从头到尾用“/”串起来,形成虚元件的负引脚特征字符串“C1uF/R1K”。
(3)节点特征字符串编码:遍历电路图中的所有节点,对每一节点,由其连接的元件引脚的引脚特征字符串组成一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾串起来,形成此节点的节点特征字符串。
例如U1反相输入端所在节点,连接由C1和R1构成的虚元件的负引脚和R2,组成的引脚特征字符串集为{“OPAN”,“C1uF/R1K”,“R10K”},按字符串排序规则,对此字符串集重新排序,得{“C1uF/R1K”,“R10K”,“OPAN”},将此字符串集的所有分量用“-”号串起来,得此节点的节点特征字符串“C1uF/R1K-R10K-OPAN”。
图4电路的全部节点的节点特征字符串如表4所示。
表4:图4电路的节点特征字符串列表
(4)电路图特征字符串编码:由全部节点的节点特征字符串组成一个字符串集,再按字符串排序规则对此字符串集的字符串进行排序,最后把此字符串集排序好的所有字符串从头到尾用“&”串起来,形成电路图特征字符串。
图4电路图全部节点的节点特征字符串组成的字符串集为
{“C1uF/R1K-R10K-OPAN”,“OPAP-GND”,“R10K-OPAO-Vo”,“C1uF/R1K-Vi”}
按字符串排序规则,对此字符串集重新排序,得
{“C1uF/R1K-R10K-OPAN”,“R10K-OPAO-Vo”,“C1uF/R1K-Vi”,“OPAP-GND”}
将此字符串集的所有字符串用“&”号串起来,得图4电路图特征字符串
CPS4=“C1uF/R1K-R10K-OPAN&R10K-OPAO-Vo&C1uF/R1K-Vi&OPAP-GND”
对图5电路图,同样方法可得其电路图特征字符串
CPS5=“C1uF/R1K-R10K-OPAN&R10K-OPAO-Vo&C1uF/R1K-Vi&OPAP-GND”
对图6电路图,同样方法可得其电路图特征字符串
CPS6=“R10K/C1uF-OPAO&R10K/C1uF-OPAO&OPAP-GND&R1K-Vi”
比较CPS4和CPS5,两者相同,表明两电路完全一致,可判定电路图5设计正确;比较CPS4和CPS6,两者不相同,表明两电路图不同,可判定电路图6设计错误。