Steve's profileWildog's MSN BlogPhotosBlogNetwork Tools Help
Photo 1 of 28

Wildog's MSN Blog

明天因为未知而值得期待
December 28

modelsim下编译xilinx库的方法

建立ModelSim SE 的Xilinx仿真库方法,从网上搜到的有很多,实践过其中几种,其中一种较简单的方法如下:
1)当然是要安装ModelSim 和ISE 。
2)将ModelSim根目录下的modelsim.ini文件的只读属性去掉。
3)在ModelSim命令窗口输入:compxlib -s mti_se -arch all -l vhdl -w -lib all
                          按回车键即可。
      说明:上述命令行中的vhdl  表示vhdl语言,如将此处改为verilog,则生成verilog的库。
 
4)将ModelSim根目录下的modelsim.ini文件设为只读。
 
完成上述步骤,重新启动modelsim,即可在libarary栏中看到已生成的Xilinx库。
 
 
October 14

如何在allegro里添加快捷键

     在设计PCB的时候,有的操作会经常用到,比如旋转(rotate),镜像(mirror)等,
     这些操作如果能用键盘快捷命令的方式来实现,就可以左手按键盘,右手用鼠标,pcb  layout时候会感觉很方便。
     
     经过我的调研和实践,操作步骤如下:
   1) 找到....\SPB_15.5\share\pcb\text\路径下的env文件。
   2)打开env文件之后,
   你会找到
alias F2 done
alias F3 oops
alias F4 cancel
alias F5 show element
alias F6 add connect
alias F7 vertex
alias F8 zoom points
alias F9 zoom fit
alias F10 zoom in
。。。。。。
这样一段文字,它们就是用来添加快捷菜键的。在allegro界面下的命令行里输入alias命令,你会看到一个文件被弹出,上面列出的就是所有快捷键的
说明。
在刚才这段文字的最下方,写入
funckey r iangle 90
funckey f mirror
funckey m move
               保存并关闭文件,重新打开allegro, 当元件被选中后,按r 键,元件就会逆时针旋转90度
               按f    是mirror
               按m 是 move
当然,这几个键都是按我个人习惯,大家可以根据自己喜好去添加。
              不过要提醒的是,一旦某个字母键被选作funckey之后,在active状态下,它就不能作为其它用途了(比如输入命令行)。 
September 30

关于pci总线 Latency Timer 的问题(续)

关于这个问题,我之前写过一篇日志,所以现在这篇小文章的题目后加了个“续”字。
 
      一开始,是我在进行一个小项目,就是在原来一位师兄设计的PXI数据采集卡的基础上,对硬件逻辑和软件进行改进,实现pci burst传输的功能。 大体上还是比较顺利,只是遇到了传输64个dW就停止的问题,很让人头疼,然后我把Latency Timer 关掉之后,一次burst2048DW没有出现问题,然后我把师兄在VC上写的数据采集软件优化了一下,在实验室一台配置较老的PC上,连续进行数据采集,可以达到20Mbyte的数据率(包括写硬盘保存文件)没有丢数据,CPU占用率10%左右,并且持续运行不死机,然后这个项目就算完成了。
      这套方案后来就用到了一位师弟(我习惯叫他周董)还有一位师妹(我习惯叫她胡博)的设计中,然后剩下的事情就是他们在继续了。
      然后周董和胡博都遇到过burst传输中断的事情,尤其是胡博,被这个问题困扰最久。
      话说我本来以为Latency Timer关掉就万事大吉了,谁知道在胡博那里还是遇到了这个问题,貌似她的传输就是到1024 DW就中断了。而且,这个问题还和PC机型有关,比如说,在一台很旧的PC机(应是四五年前的机型)上即使没关Latency Timer 一次burst连续传1M DW都没问题,但是在较新的机器上即使传1024 DW就出现abort。我断定这肯定和主板配置有关,所以建议胡博去检查她的pci卡内congfiure空间内各寄存器,但是她一直没有做成这件事(可能中间遇到困难)。因为我自己有新的事情要忙,然后这个建议就搁置在那了。
     
       话说现在解决的办法有2种:
 1)把大数据包拆开多次传输,一次burst传输只传1024 DW,申请一次中断。 
   这样只需要把逻辑稍作修改,对传输速率有稍许影响(速度可能变慢1%量级),但是这个影响不大。
 2)abort之后,再申请pci总线,在原来的断点开始续传,直到把大数据包传完之后,再申请中断。采用这个办法算是从根本上解决问题。但是,要注意的是,续传的时候要把abort点的数据找回,不然会出现数据包间断。
 
      当然,问题是解决了,至于为什么在有的机型上会出现这个问题,这个就要靠周董了。
 
      
 
 
 

如何在PSpice仿真中使用自定义波形作为信号源

之前的这几天,一直在用Cadence的capture软件仿真一个模拟电路。
一开始用的是库里自带的脉冲信号源library。
因为我所用的电路,是对来自光电倍增管的信号进行调理,所以我们之前用示波器采样了一个波形,存成了txt文本的格式。
也就是说,如果我们能把这个文本做成一个信号源文件,用capture添加到仿真电路图里作为输入,就可以使仿真结果更接近于实际。
 
在同学的提示下,经过摸索,我总结出步骤如下:
1)在原理图编辑模式下,点击添加元件按钮,add library-> sourcstm.olb ( ../tools/capture/libarary/pspice/路径下)
   对于我,要用电压源,则添加其中的vstm到原理图中,你会看到一个信号源的图标。
2) 点击该图标右键选择edit pspice library....
   然后你会看到一个窗口,同时弹出一个对话框,输入一个simulus名称,比如 Simu1
   然后单选pwl....那一项
   然后再弹出一个对话框,选择cancel
   就会进入一个波形编辑窗口 
3) file->save as
    然后把该Simu1.stl文件save到某个文件夹中。
   用ultra edit 打开该文件,你会看到如下的内容
* D:\PspiceSimulation\TofQT\PMTSimu1.stl written on Tue Sep 29 16:24:07 2009
* by Stimulus Editor -- Serial Number: 1244644 -- Version 10.5.0
;!Stimulus Get
;! PMTSimu1 Analog
;!Ok
;!Plot Axis_Settings
;!Xrange 387.39495798319ns 623.52941176471ns
;!Yrange -2 170.79207920792m
;!ManualUniverse
;!Xuniverse 1us
;!Yuniverse -1.00291 1
;!XminRes 100ps
;!YminRes 10u
;!Ok
.STIMULUS PMTSimu1 PWL
+ TIME_SCALE_FACTOR = 1
+ VALUE_SCALE_FACTOR = 1
有*的行应是注释。其它的就是波形文件的设置啦,这些都可以修改。
然后简单的办法就是把自己的波形数据粘贴到文件后面
诸如下面几行:
+   ( 0, 0 )
+   ( 4.009e-007, 0.00206 )
+   ( 4.019e-007, 0.00042 )
+   ( 4.029e-007, 0.00641 )
+   ( 4.039e-007, 0.00295 )
+   ( 4.049e-007, 0.00055 )
+   ( 4.059e-007, 0.00518 )
+   ( 4.069e-007, 0.00104 )
+   ( 4.079e-007, 0.00011 )
然后保存,就差不多了。
 
在原理图里就可以仿真了。当然这里面还有很多细节,巨细无遗地列出就太繁琐了,只有我们通过自己的实践去体会了。另外就是第2)步应该可以跳过,直接对某个stl格式的文件按自己需要进行编辑,比如说得到了一个ABC.stl的文件存在某个路径下。
然后在Vstm 的设置里,将...implementation设成ABC
然后在simulation设置对话框里,有configuration一项,点击其中pspice一项,将ABC.stl的路径添加进去,即可用于仿真。
 
 
 
 
 
 
 
September 20

如何生成Xilinx FPGA的Cadence 原理图库

因为前段时间自己用到一款Xilinx Virtex-Ii FPGA,
然而,作为一个懒人,在新建原理图封装(library)的时候,我遇到了麻烦。
对于Altera公司的FPGA来说,貌似都提供了现成的olb文件(这说明Altera在客户维持方面做得挺贴心的),
但经过仔细调研,发现Xilinx并不提供现成的的FPGA 原理图库。
由于现在FPGA管脚数越来越多(多的达1000个以上),一个一个地输入管脚名,简直是噩梦。
而且,即使你很勤劳地把所有管脚都输入,也难保其中不会出错。
 
所以,到勾狗上勾了两天,加上自己摸索,终于找到了一种相对来说比较便捷的方法。
第1步:当然是到Xilinx的官网上下载所谓pin out 文件。比如说我下载了一个virtex2_pkgs_zip.zip文件,
          包含了V-II的所有型号FPGA的pin list。例如其中的2v500fg256就是我想要的。
第2步:打开2v500fg256.txt,会看到其中的
          Package Name  、Bank name,IO Type这三列信息很有用。   
          新建一个excel表格,导入数据(文本文档格式),将2v500fg256.txt导入。
第3步:在capture中,选择file->new-> library。
第4步:单击新建的library,选择new part from spread sheet.
         你将会看到一个原理图管脚分配表
第5步:将excel中的相关列的信息粘贴到该表中。
 
到了这一步,就OK了。剩下的,就是一些小修小补的事情,原理图库就建好了。
说起来,还是蛮简单的,最关键在于知道有第4步,其它就不是问题啦。