注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

眼睛想旅行

技术就是我的生命与信仰!

 
 
 

日志

 
 
关于我

精通C,C++,python,Erlang。并熟悉各种其他编程语言,用cocos2dx游戏引擎作过几个项目。会MySQL增删改查,了解OpenGL渲染原理。懂单片机,能设计数字电路系统,会画电路图和设计电路板。喜欢了解最新前沿技术,并持续关注和学习新技术。

网易考拉推荐

开源硬件仿真库spice 3f5在xcode上编译  

2015-09-11 01:54:16|  分类: 硬件 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
前段时间买了一个示波器,又买了几个三极管,电阻和一些驻极体话筒,作了一个话筒音频放大电路,因为要调整三极管的直流工作回路,所以用了一个叫icrcuit的mac上的软件对三极管上的基极调压电阻和集电极电阻进行了仿真。最后实际焊成的电路结果与仿真结果很接近。下边是我的三极管仿真电路:
开源硬件仿真库spice 3f5在xcode上编译 - ♂苹果 - 眼睛想旅行
 
于是就想看能不能在ipad上也找到这个软件,结果找了半天硬是没有找到。索性就想自已看能不能在ipad上自已作一个硬件电路仿真软件。当然,第一步就是找相关的开源软件,然后我们来把他的源码移值到ios上就可以了。找到了一个ngspice的开源仿真软件。在mac上编译安装成功了。去官网看的时候,作者说自已是用的一个叫spice3f5的开源库,说这个库有好几十年的历史了。
ngspice官网及下载地址:http://ngspice.sourceforge.net/download.html
其中,ng-spice-rework版是ngspice的最新稳定版源码。
用到了spice3f5源码:http://embedded.eecs.berkeley.edu/pubs/downloads/spice/
中间有一个spice3f5.tar.gz (1.2Mb),就是源码。只不过这个源码默认的编译环境是windows系统下的。
而我要作的就是把这个源码在mac os系统下编译成功。
首先,解压这个压缩包:
开源硬件仿真库spice 3f5在xcode上编译 - ♂苹果 - 眼睛想旅行
 
这里我们只会用到src文件夹里的include和lib目录。别的东西都可以不要。
spice的源码是用古老的C语言写成的。
然后在xcode下新建一个C语言的命令行项目。
开源硬件仿真库spice 3f5在xcode上编译 - ♂苹果 - 眼睛想旅行
开源硬件仿真库spice 3f5在xcode上编译 - ♂苹果 - 眼睛想旅行
建好以后,把我们说的include和lib两个目录复制到项目路径下,并在xcode中添加上文件。
然后按command+B键先试着编译一下。
这时候会发现有很多的错误。不要怕,我们一点一点的来改就可以了。这里的大部分错误是C语中的函数默认反回值是int型引起的。有一多半的都是简单的给函数最后加一个return 0;就可以了。
再接下来的一些错误是一些系统库中的头文件引用错误。我们只要一点一点的把头文件加上就OK了。
最后出现错误最多的是一些变量重复定义,函数重复定义的错误,我们只要把重复的删除就可以了。
下边是我用了两天的时间修改后可以在xocde下运行起来的截图。
开源硬件仿真库spice 3f5在xcode上编译 - ♂苹果 - 眼睛想旅行
现在还没有真正开始加载电路上去仿真的试过。
明天再试一下在xcode下的电路仿真。看看我要怎么把仿真数据取出来。
计划是先把仿真的实时数据存入内存中,然后使用我熟悉的cocos2d-x游戏引擎来作UI界面以及电路图形绘制。有了电路图,再将电路图转成节点网表,加上元器件属性就可以进行仿真了,仿真结果再用游戏引擎绘制在ios界面上。目前初步计划是这样的。等接下来再对源码分析和调试。
总体上来说,这两天的收获不小啊。
 今天是2015年9月13日,今天接着写这个硬件仿真软件的编译情况。
前天编译那个spice3f5已经可以编译通过了,但是发现一直没有加载上源码里的那个元件库,所以一载入电路文件,就会报很多命令找不到,昨天又改了一天的ngspice的源码,一开始也是一直加载不上元器件,经过我打断点一点一点的分析,问题已经得到了解决,今天已经可以正常加载电路,并进行仿真了。为了以后在ios中可以正常使用这个仿真库,所以没有加入ngspice的xspice部分的视图部分源码。打算以后用cocos2d-x游戏引擎来作视图显示。下边是ngspice的基本版使用xcode编译之后的二进制文件运行的mac版仿真程序。
下边是电路和电路仿真的结果:
 spice电路网表:
EX
VS 1 0 10
R1 1 2 20
R2 2 0 20
R3 3 0 4K
L 2 3 0.2 IC=0.2
C 3 0 0.5U IC=2
.END
 网表对应的电路图:
开源硬件仿真库spice 3f5在xcode上编译 - ♂苹果 - 眼睛想旅行
使用
tran0.1 30 uic
作瞬态分析的结果:

ngspice 1 -> bjtnoise.cir


Circuit: ex


ngspice 2 -> tran -.1m 30m uic

Warning: TSTEP is invalid, must be greater than zero.


tran simulation(s) aborted

ngspice 3 -> ^R  

 

ngspice 3 -> tran 0.1m 30m uic

Doing analysis at TEMP = 27.000000 and TNOM = 27.000000



Initial Transient Solution

--------------------------


Node                                   Voltage

----                                   -------

1                                            0

2                                            0

3                                            0

l#branch                                     0

vs#branch                                    0




No. of Data Rows : 312

ngspice 4 -> print v(3)

                                       ex

                                       Transient Analysis  Sun Sep 13 21:40:38  2015

--------------------------------------------------------------------------------

Index   time            v(3)            

--------------------------------------------------------------------------------

0 0.000000e+00 0.000000e+00

1 1.000000e-06 2.398807e+00

...这里隐藏了310行...

311 3.000000e-02 4.972044e+00

ngspice 5 -> 

 
有了这些数据,画一个曲线图还是很简单的。接下来要作的事就是作一个画电路图的软件,然后把电路图转换成spice电路网表文件,发送给我的这个ngspice库,由这个库输出上边的这组电压变化数据,然后使用此数据绘画。
先使用原版的带有xspice的ngspice使用plot v(3),来绘制数据看一下:
开源硬件仿真库spice 3f5在xcode上编译 - ♂苹果 - 眼睛想旅行
 好了,今天就到这里,昨天晚上睡的太晚.
项目源码下载地址:https://github.com/fengmm521/myspice
  评论这张
 
阅读(239)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017