xuemei 的个人资料May's Home照片日志列表更多 ![]() | 帮助 |
|
5月26日 转战南北 - Verilog AMSThere are five main reasons why engineers use Verilog-AMS: 1.to model components, 2.to create test benches, 3.to accelerate simulation, 4.to verify mixed-signal systems, and 5.to support the top-down design process. 5月13日 学习Python1. Python also supports complex numbers (复数)。imaginary numbers are written with a suffix of ‘j’ or ‘J’. Complex numbers
with a nonzero real component are written as ‘(real+imagj)’, or can be created with the ‘complex(real, imag)’ function. Complex numbers are always represented as two floating point numbers, the real and imaginary part (实部,虚部). To extract these parts from a complex number z, use z.real and z.imag. 2。Multiple assignment: the variables a and b simultaneously get the new values 0 and 1.
a, b = 0, 1
The right-hand side expressions are evaluated from the left to the right.
a, b = b, a+b
3. To iterate over the indices of a sequence, combine range() and len() as follows:
>>> a = [’Mary’, ’had’, ’a’, ’little’, ’lamb’]
>>> for i in range(len(a)): ... print i, a[i] ... 0 Mary 1 had 2 a 3 little 4 lamb 4. There are three built-in functions that are very useful when used with lists: filter(), map(), and reduce().
‘filter(function, sequence)’ returns a sequence (of the same type, if possible) consisting of those items from the
sequence for which function(item) is true. For example, >>> def f(x): return x % 2 != 0 and x % 3 != 0
... >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23] ‘map(function, sequence)’ calls function(item) for each of the sequence’s items and returns a list of the return
values. For example, >>> def cube(x): return x*x*x
... >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] ‘reduce(func, sequence)’ returns a single value constructed by calling the binary function func on the first two
items of the sequence, then on the result and the next item, and so on. For example, to compute the sum of the numbers 1 through 10: >>> def add(x,y): return x+y
... >>> reduce(add, range(1, 11)) 55 >>> def sum(seq):
... def add(x,y): return x+y ... return reduce(add, seq, 0) ... >>> sum(range(1, 11)) 55 >>> sum([]) 0 5. Another useful data type built into Python is the dictionary. Dictionaries are sometimes found in other languages
as “associative memories” or “associative arrays”. Unlike sequences, which are indexed by a range of numbers, dictionaries are indexed by keys, which can be any immutable type; strings and numbers can always be keys. >>> tel = {’jack’: 4098, ’sape’: 4139}
>>> tel[’guido’] = 4127 >>> tel {’sape’: 4139, ’guido’: 4127, ’jack’: 4098} >>> tel[’jack’] 4098 >>> del tel[’sape’] >>> tel[’irv’] = 4127 >>> tel {’guido’: 4127, ’irv’: 4127, ’jack’: 4098} >>> tel.keys() [’guido’, ’irv’, ’jack’] >>> tel.has_key(’guido’) True 6. Methods of File Objects
f.read(size)
f.readline()
f.readlines()
f.write(string)
f.tell() returns an integer giving the file object’s current position in the file, measured in bytes from the beginning of the file.
f.seek()
f.close()
Python provides a standard module called pickle. This is an amazing module that can take almost any Python object (even some forms
of Python code!), and convert it to a string representation; this process is called pickling. Reconstructing the object from the string representation is called unpickling. pickle.dump(x, f)
x = pickle.load(f) 3月19日 Debugging real-time multiprocessor systemsgood articles from Embedded.com
Debugging real-time multiprocessor systems: Part 1
Debugging real-time multiprocessor systems: Part 2
3月12日 MicrodisplayMicrodisplays are displays that are so small that optical magnification is needed. Most microdisplays use a silicon chip as the substrate material. The chip also houses the addressing electronics (at least an active matrix with integrated drivers), usually implemented in standard CMOS technology. This mature technology generates very reliable and stable circuits (better than TFT technology) and allows very small pixel pitches (down to 10 µm or even somewhat smaller) and high display resolutions. Microdisplays can be used in projectors or in "near to the eye" (NTE) applications, such as in head-mounted displays and camera view-finders. Several electro-optical effects can be used to generate the image: Electroluminescence (EL), OLED, vacuum fluorescence (VF), reflective Liquid Crystal effects and tilting or deforming of micro-mirrors (requires micro-machining). The most popular combinations today are Liquid Crystal On Silicon (LCOS), OLED on silicon and tilted mirrors (DMD or DLP). (From : http://tfcg.elis.ugent.be/microdis/index.html)
凤尾鱼以前也养过鱼,先是金鱼,后是凤尾,可是都不长久.还记得去毛毛的实验室,很是羡慕她怎么把鱼养的那么好,都有了一代一代的小鱼.
圣诞节时,跟锐一时兴起就去买了几条凤尾来养,因为它是胎生,最好养.开始十几条鱼挤在一个小缸里,不知是不是缺氧,死了好几条.
后来换了一个大大的鱼缸,还买了沙石,水草,换气泵,加热泵,终于给这些小鱼创造了一个好环境,可怜的鱼不再死了.
并且还生了很多小鱼,现在有40多条了了,最大的都有1.5厘米了,最小的就象小蝌蚪一样,非常可爱. 哈哈
2月13日 windows与Linux下之间用串口传输文件 (转)
因为没有带网口,只有USB转串口可以使用,所以想寻找一个稳定的传输途径,在host和device之间交换文件。问了很多人都不清楚,还是要靠自己找解决方法。 在google上找了半天,终于找到了一个可以通过串口传送文件的软件,这就是古董级的Unix工具:lrzsz。lrzsz可以通过Xmodem,Ymodem,Zmodem协议传送文件。 lrzsz的下载地址:http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz 在uClinux的user目录下,我找到了这个lrzsz目录,说明uClinux应该是可以运行lrzsz的。编译uClinux的时候,选上lrzsz,编译,烧录进开发板,上电,运行,其中lrzsz编译出来两个文件,一个是lrz用于接收文件,一个是lsz用于发送文件。 在Windows上用超级终端打开串口,连上uClinux,输入以下命令: cd /bin lsz * 第一个命令是进入bin目录,第二个lsz命令是发送全部文件。 输入以后,超级终端立刻弹出一个界面,显示一个文件正在传送中,包括进度,文件名,使用的协议是zmodem,哈哈,很酷哦! 全部文件发送完毕后,都放在了一个默认目录下面。 从host端发送文件到device端,也是很容易的,但是要保证RamDisk有足够的空间。我一开始没有注意RamDisk只有128KB,却传送了1MB的文件,结果传送完毕后,系统就挂了,注意注意! 采用这个命令: cd /var lrz -Z 第一个命令是进入RamDisk,应该保证这个目录是可写的,并且保证大小应该超过传送的文件。 第二个命令是接收文件,使用Zmodem协议。 运行命令后,在超级终端下选择“发送文件”,选择“Zmodem协议”,选择一个文件,即可将文件通过串口发送到device的var目录下。 在Windows下可以用超级终端,在Linux下应该用什么终端工具? 答案是:c-Kermit,我在Ubuntu下装了minicom,但是跑不起来,其中u-boot的网页上也说minicom不一定能用。下载一个c-kermit,就可以与device通讯了。就不再多说啦! 作者的email是 szricky@126.com,Ricky Xian 1月28日 上拉电阻下拉电阻的总结-转载上拉电阻:
1月18日 用PROTEL99设计电路板的基本流程用PROTEL99设计电路板的基本流程 一、电路板设计的先期工作 1、利用原理图设计工具绘制原理图,并且生成对应的网络表。当然,有些特殊情况下,如电路板比较简单,已经有了网络表等情况下也可以不进行原理图的设计,直接进入PCB设计系统,在PCB设计系统中,可以直接取用零件封装,人工生成网络表。 2、手工更改网络表 将一些元件的固定用脚等原理图上没有的焊盘定义到与它相通的网络上,没任何物理连接的可定义到地或保护地等。将一些原理图和PCB封装库中引脚名称不一致的器件引脚名称改成和PCB封装库中的一致,特别是二、三极管等。 二、画出自己定义的非标准器件的封装库 建议将自己所画的器件都放入一个自己建立的PCB 库专用设计文件。 三、设置PCB设计环境和绘制印刷电路的板框含中间的镂空等 1、进入PCB系统后的第一步就是设置PCB设计环境,包括设置格点大小和类型,光标类型,板层参数,布线参数等等。大多数参数都可以用系统默认值,而且这些参数经过设置之后,符合个人的习惯,以后无须再去修改。 2、规划电路板,主要是确定电路板的边框,包括电路板的尺寸大小等等。在需要放置固定孔的地方放上适当大小的焊盘。对于3mm 的螺丝可用6.5~8mm 的外径和3.2~3.5mm 内径的焊盘对于标准板可从其它板或PCB izard 中调入。 注意:在绘制电路板地边框前,一定要将当前层设置成Keep Out层,即禁止布线层。 四、打开所有要用到的PCB 库文件后,调入网络表文件和修改零件封装 这一步是非常重要的一个环节,网络表是PCB自动布线的灵魂,也是原理图设计与印象电路板设计的接口,只有将网络表装入后,才能进行电路板的布线。 在原理图设计的过程中,ERC检查不会涉及到零件的封装问题。因此,原理图设计时,零件的封装可能被遗忘,在引进网络表时可以根据设计情况来修改或补充零件的封装。 当然,可以直接在PCB内人工生成网络表,并且指定零件封装。 五、布置零件封装的位置,也称零件布局 Protel99可以进行自动布局,也可以进行手动布局。如果进行自动布局,运行"Tools"下面的"Auto Place",用这个命令,你需要有足够的耐心。布线的关键是布局,多数设计者采用手动布局的形式。用鼠标选中一个元件,按住鼠标左键不放,拖住这个元件到达目的地,放开左键,将该元件固定。Protel99在布局方面新增加了一些技巧。新的交互式布局选项包含自动选择和自动对齐。使用自动选择方式可以很快地收集相似封装的元件,然后旋转、展开和整理成组,就可以移动到板上所需位置上了。当简易的布局完成后,使用自动对齐方式整齐地展开或缩紧一组封装相似的元件。 提示:在自动选择时,使用Shift+X或Y和Ctrl+X或Y可展开和缩紧选定组件的X、Y方向。 注意:零件布局,应当从机械结构散热、电磁干扰、将来布线的方便性等方面综合考虑。先布置与机械尺寸有关的器件,并锁定这些器件,然后是大的占位置的器件和电路的核心元件,再是外围的小元件。 六、根据情况再作适当调整然后将全部器件锁定 假如板上空间允许则可在板上放上一些类似于实验板的布线区。对于大板子,应在中间多加固定螺丝孔。板上有重的器件或较大的接插件等受力器件边上也应加固定螺丝孔,有需要的话可在适当位置放上一些测试用焊盘,最好在原理图中就加上。将过小的焊盘过孔改大,将所有固定螺丝孔焊盘的网络定义到地或保护地等。 放好后用VIEW3D 功能察看一下实际效果,存盘。 七、布线规则设置 布线规则是设置布线的各个规范(象使用层面、各组线宽、过孔间距、布线的拓朴结构等部分规则,可通过Design-Rules 的Menu 处从其它板导出后,再导入这块板)这个步骤不必每次都要设置,按个人的习惯,设定一次就可以。 选Design-Rules 一般需要重新设置以下几点: 1、安全间距(Routing标签的Clearance Constraint) 它规定了板上不同网络的走线焊盘过孔等之间必须保持的距离。一般板子可设为0.254mm,较空的板子可设为0.3mm,较密的贴片板子可设为0.2- 0.22mm,极少数印板加工厂家的生产能力在0.1-0.15mm,假如能征得他们同意你就能设成此值。0.1mm 以下是绝对禁止的。 2、走线层面和方向(Routing标签的Routing Layers) 此处可设置使用的走线层和每层的主要走线方向。请注意贴片的单面板只用顶层,直插型的单面板只用底层,但是多层板的电源层不是在这里设置的(可以在 Design-Layer Stack Manager中,点顶层或底层后,用Add Plane 添加,用鼠标左键双击后设置,点中本层后用Delete 删除),机械层也不是在这里设置的(可以在Design-Mechanical Layer 中选择所要用到的机械层,并选择是否可视和是否同时在单层显示模式下显示)。 机械层1 一般用于画板子的边框; 机械层3 一般用于画板子上的挡条等机械结构件; 机械层4 一般用于画标尺和注释等,具体可自己用PCB Wizard 中导出一个PCAT结构的板子看一下 3、过孔形状(Routing标签的Routing Via Style) 它规定了手工和自动布线时自动产生的过孔的内、外径,均分为最小、最大和首选值,其中首选值是最重要的,下同。 4、走线线宽(Routing标签的Width Constraint) 它规定了手工和自动布线时走线的宽度。整个板范围的首选项一般取0.2-0.6mm,另添加一些网络或网络组(Net Class)的线宽设置,如地线、+5 伏电源线、交流电源输入线、功率输出线和电源组等。网络组可以事先在Design-Netlist Manager中定义好,地线一般可选1mm 宽度,各种电源线一般可选0.5-1mm 宽度,印板上线宽和电流的关系大约是每毫米线宽允许通过1安培的电流,具体可参看有关资料。当线径首选值太大使得SMD 焊盘在自动布线无法走通时,它会在进入到SMD 焊盘处自动缩小成最小宽度和焊盘的宽度之间的一段走线,其中Board 为对整个板的线宽约束,它的优先级最低,即布线时首先满足网络和网络组等的线宽约束条件。 5、敷铜连接形状的设置(Manufacturing标签的Polygon Connect Style) 建议用Relief Connect 方式导线宽度Conductor Width 取0.3-0.5mm 4 根导线45 或90 度。 其余各项一般可用它原先的缺省值,而象布线的拓朴结构、电源层的间距和连接形状匹配的网络长度等项可根据需要设置。 选Tools-Preferences,其中Options 栏的Interactive Routing 处选Push Obstacle (遇到不同网络的走线时推挤其它的走线,Ignore Obstacle为穿过,Avoid Obstacle 为拦断)模式并选中Automatically Remove (自动删除多余的走线)。Defaults 栏的Track 和Via 等也可改一下,一般不必去动它们。 在不希望有走线的区域内放置FILL 填充层,如散热器和卧放的两脚晶振下方所在布线层,要上锡的在Top 或Bottom Solder 相应处放FILL。 布线规则设置也是印刷电路板设计的关键之一,需要丰富的实践经验。 八、自动布线和手工调整 1、点击菜单命令Auto Route/Setup 对自动布线功能进行设置 选中除了Add Testpoints 以外的所有项,特别是选中其中的Lock All Pre-Route 选项,Routing Grid 可选1mil 等。自动布线开始前PROTEL 会给你一个推荐值可不去理它或改为它的推荐值,此值越小板越容易100%布通,但布线难度和所花时间越大。 2、点击菜单命令Auto Route/All 开始自动布线 假如不能完全布通则可手工继续完成或UNDO 一次(千万不要用撤消全部布线功能,它会删除所有的预布线和自由焊盘、过孔)后调整一下布局或布线规则,再重新布线。完成后做一次DRC,有错则改正。布局和布线过程中,若发现原理图有错则应及时更新原理图和网络表,手工更改网络表(同第一步),并重装网络表后再布。 3、对布线进行手工初步调整 需加粗的地线、电源线、功率输出线等加粗,某几根绕得太多的线重布一下,消除部分不必要的过孔,再次用VIEW3D 功能察看实际效果。手工调整中可选Tools-Density Map 查看布线密度,红色为最密,黄色次之,绿色为较松,看完后可按键盘上的End 键刷新屏幕。红色部分一般应将走线调整得松一些,直到变成黄色或绿色。 九、切换到单层显示模式下(点击菜单命令Tools/Preferences,选中对话框中Display栏的Single Layer Mode) 将每个布线层的线拉整齐和美观。手工调整时应经常做DRC,因为有时候有些线会断开而你可能会从它断开处中间走上好几根线,快完成时可将每个布线层单独打印出来,以方便改线时参考,其间也要经常用3D显示和密度图功能查看。 最后取消单层显示模式,存盘。 十、如果器件需要重新标注可点击菜单命令Tools/Re-Annotate 并选择好方向后,按OK钮。 并回原理图中选Tools-Back Annotate 并选择好新生成的那个*.WAS 文件后,按OK 钮。原理图中有些标号应重新拖放以求美观,全部调完并DRC 通过后,拖放所有丝印层的字符到合适位置。 注意字符尽量不要放在元件下面或过孔焊盘上面。对于过大的字符可适当缩小,DrillDrawing 层可按需放上一些坐标(Place-Coordinate)和尺寸((Place-Dimension)。 最后再放上印板名称、设计板本号、公司名称、文件首次加工日期、印板文件名、文件加工编号等信息(请参见第五步图中所示)。并可用第三方提供的程序来加上图形和中文注释如BMP2PCB.EXE 和宏势公司ROTEL99 和PROTEL99SE 专用PCB 汉字输入程序包中的FONT.EXE 等。 十一、对所有过孔和焊盘补泪滴 补泪滴可增加它们的牢度,但会使板上的线变得较难看。顺序按下键盘的S 和A 键(全选),再选择Tools-Teardrops,选中General 栏的前三个,并选Add 和Track 模式,如果你不需要把最终文件转为PROTEL 的DOS 板格式文件的话也可用其它模式,后按OK 钮。完成后顺序按下键盘的X 和A 键(全部不选中)。对于贴片和单面板一定要加。 十二、放置覆铜区 将设计规则里的安全间距暂时改为0.5-1mm 并清除错误标记,选Place-Polygon Plane 在各布线层放置地线网络的覆铜(尽量用八角形,而不是用圆弧来包裹焊盘。最终要转成DOS 格式文件的话,一定要选择用八角形)。设置完成后,再按OK 扭,画出需覆铜区域的边框,最后一条边可不画,直接按鼠标右键就可开始覆铜。它缺省认为你的起点和终点之间始终用一条直线相连,电路频率较高时可选 Grid Size 比Track Width 大,覆出网格线。 相应放置其余几个布线层的覆铜,观察某一层上较大面积没有覆铜的地方,在其它层有覆铜处放一个过孔,双击覆铜区域内任一点并选择一个覆铜后,直接点OK,再点Yes 便可更新这个覆铜。几个覆铜多次反复几次直到每个覆铜层都较满为止。将设计规则里的安全间距改回原值。 十三、最后再做一次DRC 选择其中Clearance Constraints Max/Min Width Constraints Short Circuit Constraints 和Un-Routed Nets Constraints 这几项,按Run DRC 钮,有错则改正。全部正确后存盘。 十四、对于支持PROTEL99SE 格式(PCB4.0)加工的厂家可在观看文档目录情况下,将这个文件导出为一个*.PCB 文件;对于支持PROTEL99 格式(PCB3.0)加工的厂家,可将文件另存为PCB 3.0 二进制文件,做DRC。通过后不存盘退出。在观看文档目录情况下,将这个文件导出为一个*.PCB 文件。由于目前很大一部分厂家只能做DOS 下的PROTEL AUTOTRAX 画的板子,所以以下这几步是产生一个DOS 板PCB 文件必不可少的: 1、将所有机械层内容改到机械层1,在观看文档目录情况下,将网络表导出为*.NET 文件,在打开本PCB 文件观看的情况下,将PCB 导出为PROTEL PCB 2.8 ASCII FILE 格式的*.PCB 文件。 2 、用PROTEL FOR WINDOWS PCB 2.8 打开PCB 文件,选择文件菜单中的另存为,并选择Autotrax 格式存成一个DOS 下可打开的文件。 3、用DOS 下的PROTEL AUTOTRAX 打开这个文件。个别字符串可能要重新拖放或调整大小。上下放的全部两脚贴片元件可能会产生焊盘X-Y大小互换的情况,一个一个调整它们。大的四列贴片IC 也会全部焊盘X-Y 互换,只能自动调整一半后,手工一个一个改,请随时存盘,这个过程中很容易产生人为错误。PROTEL DOS 板可是没有UNDO 功能的。假如你先前布了覆铜并选择了用圆弧来包裹焊盘,那么现在所有的网络基本上都已相连了,手工一个一个删除和修改这些圆弧是非常累的,所以前面推荐大家一定要用八角形来包裹焊盘。这些都完成后,用前面导出的网络表作DRC Route 中的Separation Setup ,各项值应比WINDOWS 板下小一些,有错则改正,直到DRC 全部通过为止。 也可直接生成GERBER 和钻孔文件交给厂家选File-CAM Manager 按Next>钮出来六个选项,Bom 为元器件清单表,DRC 为设计规则检查报告,Gerber 为光绘文件,NC Drill 为钻孔文件,Pick Place 为自动拾放文件,Test Points 为测试点报告。选择Gerber 后按提示一步步往下做。其中有些与生产工艺能力有关的参数需印板生产厂家提供。直到按下Finish 为止。在生成的Gerber Output 1 上按鼠标右键,选Insert NC Drill 加入钻孔文件,再按鼠标右键选Generate CAM Files 生成真正的输出文件,光绘文件可导出后用CAM350 打开并校验。注意电源层是负片输出的。 十五、发Email 或拷盘给加工厂家,注明板材料和厚度(做一般板子时,厚度为1.6mm,特大型板可用2mm,射频用微带板等一般在0.8-1mm 左右,并应该给出板子的介电常数等指标)、数量、加工时需特别注意之处等。Email发出后两小时内打电话给厂家确认收到与否。 十六、产生BOM 文件并导出后编辑成符合公司内部规定的格式。 十七、将边框螺丝孔接插件等与机箱机械加工有关的部分(即先把其它不相关的部分选中后删除),导出为公制尺寸的AutoCAD R14 的DWG 格式文件给机械设计人员。 二十一、整理和打印各种文档。如元器件清单、器件装配图(并应注上打印比例)、安装和接线说明等。 1月13日 选择电感除了电感值,电感的类型也是优化电路设计所必须考虑的一个关键所在,这也是手机制造商成本的关键所在。以目前手机中常用的绕线电感和叠层电感为例,叠层电感相比饶线电感而言,具有较大的成本优势,且尺寸上比线绕电感要小50%以上。另外,在满足尺寸和电感值要求的前提下,应选择电感直流阻抗尽可能小的电感,以降低电感的直流损耗。
http://www.ed-china.com/ART_8800019845_400003_500002_TS_b24b5b34.HTM http://www.ed-china.com/ART_8800019846_400003_500002_TS_2d3730c1.HTM 1月8日 Memory subsystem of AMD K10 Micro-Architecture---- From http://www.xbitlabs.com/articles/cpu/display/amd-k10_8.htmlLoad/Store UnitWhen the memory request addresses have been calculated in the AGU of K8 processor, all load and store operations are sent to LSU (Load/Store Unit). LSU contains two queues: LS1 and LS2. At first, load and store operations get into LS1 queue 12 elements deep. At two operations per clock speed, LS1 queue issues requests to L1 cache memory in order determined by the program code. In case of a cache-miss, operations are placed into the LS2 queue 32 elements deep. This is where the requests to L2 cache memory and RAM come from. The LSU of the K10 processor has been modified. Now LS1 queue receives only load operations, while store operations are sent to LS2 queue. Load operations from LS1 can be executed in an out-of-order manner taking into account addresses of store operations in LS2. As we have already mentioned above, K10 processes 128-bit store operations as two 64-bit ones that is why they take two positions each in the LS2 queue. L1 CacheL1 cache in K8 and K10 processors is separated: 64KB for instructions (L1I) and data (L1D). Each cache is 2-way set associative; the line length is 64 bytes. This low associativity may result into frequent conflicts between the lines aiming at the same sets, which in its turn may increase the number of cache-misses and negatively affect the performance. Low associativity is often compensated by the rather large size of L1 cache. A significant advantage of L1D is the two ports: it can process two read and/or write instructions per clock in any combination. Unfortunately, L1 cache of K10 processor still has the same size and associativity. The only noticeable improvement is the read bus width increase. As we have said in the previous chapter, now the CPU can perform two 128-bit reads every clock cycle, which makes it much more efficient during SSE-data processing in local memory. L2 CacheEach core of the dual-core and quad-core K8 and K10 processors has its own individual L2 cache. The L2 cache in K10 remained the same: 512KB per core with associativity of 16. Exclusive L2 caches have their pros and cons compared with the shared L2 cache in Core 2 CPUs. Among the advantages, certainly are the absence of conflicts and competition for the cache when several processor cores are heavily loaded at the same time. As for the drawbacks, there is less cache available for each core when there is only one applications running full throttle. L2 cache is exclusive: the data stored in L1 and L2 caches do not duplicate. L1 and L2 caches exchange data along two unidirectional buses: one serves to receive data and another one – to send data. In K8 processor each bus is 64bit (8 bytes) wide (Pic.5a). This organization provides the data delivery rate to L2 cache at the modest 8 bytes/clock speed. In other words, it will take 8 clock cycles to transfer a 64-bit line, so the data delivery to the core will be delayed noticeably, especially if two or more lines of the L2 cache are addressed at the same time. Although it hasn’t been confirmed yet, the send and receive buses in K10 processor will become twice as wide, i.e. 128bit each (Pic.5b). It should reduce the cache access latency significantly when two or more lines are requested at the same time.
L3 CacheTo make up for the relatively small L2 cache, K10 acquired a shared between all cores 2MB L3 cache with associativity of 32. L3 cache is adaptive and exclusive: it stores all data evicted from L2 caches of all cores as well as the data shared by several cores. When the core issues a line read request, a special check is performed. If the line is only used by one core, it is removed from L3 freeing room for the line that is evicted from L2 cache of the requesting core. If the requested line is also used by another core, it remains in the cache. However, in order to accommodate the line evicted from L2 cache, another – older – line will be removed in this case. L3 cache should help speed up the data transfer rate between the cores. As we have already found out, contemporary Athlon 64 processors exchange data between the cores via the memory bus. As a result, access to shared modified data occurs much slower. According to AMD’s materials, quad-core K10 processors may exchange data via L3 cache. Once the request from one of the cores arrives, the core that has the modified data copies them to L3 cache, where the requesting core can read them from. The access time to modified data in the other core’s cache should become much shorter. When we get a chance, we will certainly check it out.
L3 cache latency will evidently be higher than L2 cache latency. However, AMD materials suggest that the latency will vary adaptively depending on the workload. If the workload isn’t too heavy, latency will improve, and under heavy workload the bandwidth will rise. We still have to check what really stands behind this. TLBBesides cache-memory for instructions and data, processors have one more type of cache-memory: translation-lookaside buffers (TLB). These buffers are used to store the connection between virtual and physical page addresses obtained from the page tables. The number of TLB entries determines how many memory pages can be involved without additional costly page table walks. This is especially critical for applications that process memory data randomly, when they constantly request the data on different pages. K10 processor has much more translation buffers. For your convenience they are all given in the table below:
As you see from the table, there are much more buffers for translation of 2MB pages. There also appeared support of large 1GB pages that may be very useful for servers processing large volumes of data. With appropriate support from OS, applications using large 2MB and 1GB pages should run considerably faster. Memory ControllerWhen the requested data isn’t found in any of the caches, the request is issued to the memory controller integrated onto the processor die. On-die location of the memory controller reduces the latencies during work with the memory, but at the same time it ties up the processor to a specific memory type, increases the die size and complicates the die selection process thus affecting the production yields. The on-die memory controller was one of the advantages of the K8 processors, however, sometimes it wasn’t efficient enough. The memory controller of K10 processors will be improved significantly. Firstly, it now can transfer data not only along one 128-bit channel, but also along two independent 64-bit channels. As a result, two or more processor cores can work more efficiently with the memory at the same time. Secondly, the scheduling and reordering algorithms in the memory controller have been optimized. The memory controller groups reads and writes so that the memory bus could be utilized with maximum efficiency. Read operations have an advantage over writes. The data to be written is stored in the buffer of still unknown size (it is assumed to accommodate between 16 and 30 64-byte lines). By handling requested lines in groups we can avoid switching the memory bus from reading to writing and back all the time and thus save resources. It is allows to significantly improve performance during alternating read and write requests. Thirdly, the memory controller can analyze requests sequences and perform prefetch. PrefetchPrefetch is a definite advantage of K8 processors. Integrated memory controller with low latency has let AMD processors to demonstrate excellent performance with the memory subsystem for a long time. However, K8 processors failed to prove as efficient with new DDR2 memory, unlike Core 2 with powerful prefetch mechanism. K8 processors have two prefetch units: one for the code and another one for the data. The data prefetch unit fetches data into the L2 cache basing on simplified successions. K10 has improved prefetch mechanism. First of all, k10 processors prefetch data directly into the L1 cache, which allows hiding the L2 cache latency when requesting data. Although it increases the probability of L1 cache pollution with unnecessary data, especially taking into account low cache associativity, AMD claims that it is a justified measure that pays off well. Secondly, they implemented adaptive prefetch mechanism that changes the prefetch distance dynamically, so that the data could arrive in time and so that the cache wouldn’t get loaded with data that is not needed yet. Prefetch unit became more flexible: now it can trains on memory requests at any addresses, and not only the addresses that fall into adjacent lines. Moreover, prefetch unit now trains on software prefetch requests. Thirdly, a separate prefetch unit was added directly into the memory controller. The memory controller analyzes request successions from cores and loads the data into the write buffer utilizing the memory bus in the most optimal way. Saving prefetch lines in the write buffer helps keep cache-memory clean and reduce the data access latency significantly. As a result, we see that the memory subsystem of K10 processors has undergone some positive improvements. But we still have to say that it still potentially yields to the memory subsystem in Intel processors in some characteristics. Among these features are: the absence of speculative loading at unknown address past the write operations, lower L1D cache associativity, narrower bus between L1 and L2 caches (in terms of data transfer rate), smaller L2 cache and simpler prefetch. Despite all the improvements, Core 2 prefetch is potentially more powerful than K10 prefetch. For example, K10 has no prefetch at instruction addresses so that we could keeps track of individual instructions, as well as no prefetch from L2 to L1 that could hide L2 latency efficiently enough. These factors can have different effects on various applications, but in most cases they will determine higher performance of Intel processors.
12月17日 pcb 设计1 电源、地线的处理 既使在整个PCB板中的布线完成得都很好,但由于电源、 地线的考虑不周到而引起的干扰,会使产品的性能
2.1 网表输入 另一种方法是直接在PowerPCB中装载网表,选择File->Import,将原理图生成的网表输入进来。 2.2 规则设置 如果在原理图设计阶段就已经把PCB的设计规则设置好的话,就不用再进行设置 2.3 元器件布局 网表输入以后,所有的元器件都会放在工作区的零点,重叠在一起,下一步的工作就是把这些元器件分开,按照 2.3.1 手工布局 2.3.2 自动布局 PowerPCB提供了自动布局和自动的局部簇布局,但对大多数的设计来说,效果并不理想,不推荐使用。 2.3.3 注意事项 2.4.1 手工布线 2.4.2 自动布线 手工布线结束以后,剩下的 2.4.3 注意事项 2.5 检查 检查的项目有间距(Clearance)、连接性(Connectivity)、高速规则(High Speed)和电源层(Plane),这些项目 2.6 复查 复查根据“PCB检查表”,内容包括设计规则,层定义、线宽、间距、焊盘、过孔设置;还要重点复查器件布局的合理 2.7 设计输出 PCB设计可以输出到打印机或输出光绘文件。打印机可以把PCB分层打印,便于设计者和复查者检查;光绘文件交给 a. 需要输出的层有布线层(包括顶层、底层、中间布线层)、电源层(包括VCC层和GND层)、丝印层(包括顶层丝印、底层丝印) e. 设置丝印层的Layer时,不要选择Part Type,选择顶层(底层)和丝印层的Outline、Text、Line f. 设置阻焊层的Layer时,选择过孔表示过孔上不加阻焊,不选过孔表示家阻焊,视具体情况确定 g. 生成钻孔文件时,使用PowerPCB的缺省设置,不要作任何改动 h. 所有光绘文件输出以后,用CAM350打开并打印,由设计者和复查者根据“PCB检查表”检查过孔(via)是多层PCB的重要组 三、过孔的寄生电感 同样,过孔存在寄生电容的同时也存在着寄生电感,在高速数字电路的设计中,过孔的寄生电感带来的危害 四、高速PCB中的过孔设计 通过上面对过孔寄生特性的分析,我们可以看到,在高速PCB设计中,看似简单的过 孔往往也会给电路 1、从成本和信号质量两方面考虑,选择合理尺寸的过孔大小。比如对6-10层的内 存模块PCB设计来说,选用10/20Mil(钻孔/焊盘) 2、上面讨论的两个公式可以得出,使用较薄的PCB板有利于减小过孔的两种寄 生参数。 3、PCB板上的信号走线尽量不换层,也就是说尽量不要使用不必要的过孔。 4、电源和地的管脚要就近打过孔,过孔和管脚之间的引线越短越好,因为它们会 导致电感的增加。同时电源和地的引线要尽可能粗, 5、在信号换层的过孔附近放置一些接地的过孔,以便为信号提供最近的回路。甚至可以在PCB板上大量放置一些多余的接地过孔。当 protel快捷键主要用在PCB中,SCH部分可用。按某个字母弹出的菜单,再按弹出菜单中带下画线的字母就可执行相应命令。如接连按fs就执行保存文档。 enter——选取或启动 esc——放弃或取消 f1——启动在线帮助窗口 tab——启动浮动图件的属性窗口 pgup——放大窗口显示比例 pgdn——缩小窗口显示比例 end——刷新屏幕 del——删除点取的元件(1个) ctrl+del——删除选取的元件(2个或2个以上) x+a——取消所有被选取图件的选取状态 x——将浮动图件左右翻转 y——将浮动图件上下翻转 space——将浮动图件旋转90度 shift+ctrl+左鼠——移动单个对象 shift+单左鼠——选定单个对象 crtl+单左鼠,再释放crtl——拖动单个对象 按ctrl后移动或拖动——移动对象时,不受电器格点限制 按alt后移动或拖动——移动对象时,保持垂直方向 按shift+alt后移动或拖动——移动对象时,保持水平方向 crtl+ins——将选取图件复制到编辑区里 shift+ins——将剪贴板里的图件贴到编辑区里 shift+del——将选取图件剪切放入剪贴板里 alt+backspace——恢复前一次的操作 ctrl+backspace——取消前一次的恢复 crtl+f——寻找指定的文字 alt+f4——关闭protel spacebar——绘制导线,直线或总线时,改变走线模式 v+d——缩放视图,以显示整张电路图 v+f——缩放视图,以显示所有电路部件 home——以光标位置为中心,刷新屏幕 esc——终止当前正在进行的操作,返回待命状态 backspace——放置导线或多边形时,删除最末一个顶点 delete——放置导线或多边形时,删除最末一个顶点 ctrl+tab——在打开的各个设计文件文档之间切换 alt+tab——在打开的各个应用程序之间切换 a——弹出edit\align子菜单 b——弹出view\toolbars子菜单 e——弹出edit菜单 f——弹出file菜单 g——网格大小设置 h——弹出help菜单 i——弹出元件布局菜单 j——弹出edit\jump菜单(可调到元件、网络等等) l——弹出Document option对话框 m——弹出edit\move子菜单 n——显示、隐藏预拉线 o——弹出options、preferences、layer等相关窗口 p——弹出place菜单 q——英制与公制切换 r——弹出reports菜单 s——弹出edit\select子菜单 t——弹出tools菜单 u——删除自动布线菜单 v——弹出view菜单 w——弹出window菜单 x——弹出edit\deselect菜单 z——弹出zoom菜单 左箭头——光标左移1个电气栅格 shift+左箭头——光标左移10个电气栅格 右箭头——光标右移1个电气栅格 shift+右箭头——光标右移10个电气栅格 上箭头——光标上移1个电气栅格 shift+上箭头——光标上移10个电气栅格 下箭头——光标下移1个电气栅格 shift+下箭头——光标下移10个电气栅格 ctrl+1——以零件原来的尺寸的大小显示图纸 ctrl+2——以零件原来的尺寸的200%显示图纸 ctrl+4——以零件原来的尺寸的400%显示图纸 ctrl+5——以零件原来的尺寸的50%显示图纸 ctrl+f——查找指定字符 ctrl+g——查找替换字符 ctrl+b——将选定对象以下边缘为基准,底部对齐 ctrl+t——将选定对象以上边缘为基准,顶部对齐 ctrl+l——将选定对象以左边缘为基准,靠左对齐 ctrl+r——将选定对象以右边缘为基准,靠右对齐 ctrl+h——将选定对象以左右边缘的中心线为基准,水平居中排列 ctrl+v——将选定对象以上下边缘的中心线为基准,垂直居中排列 ctrl+shift+h——将选定对象在左右边缘之间,水平均布 ctrl+shift+v——将选定对象在上下边缘之间,垂直均布 f3——查找下一个匹配字符 shift+f4——将打开的所有文档窗口平铺显示 shift+f5——将打开的所有文档窗口层叠显示 电子元器件手工焊接 - 转载手工焊接过程
1、操作前检查 (1)每天上班前3-5分钟把电烙铁插头插入规定的插座上,检查烙铁是否发热,如发觉不热,先检查插座是否插好,如插好,若还不发热,应立即向管理员汇报,不能自随意拆开烙铁,更不能用手直接接触烙铁头. (2)已经氧化凹凸不平的或带钩的烙铁头应更新的:1、可以保证良好的热传导效果;2、保证被焊接物的品质。如果换上新的烙铁嘴,受热后应将保养漆擦掉,立即加上锡保养。烙铁的清洗要在焊锡作业前实施,如果5分钟以上不使用烙铁,需关闭电源。海绵要清洗干净不干净的海绵中含有金属颗粒,或含硫的海绵都会损坏烙铁头。3)检查吸锡海绵是否有水和清洁,若没水,请加入适量的水(适量是指把海绵按到常态的一半厚时有水渗出,具体操作为:湿度要求海绵全部湿润后,握在手掌心,五指自然合拢即可),海绵要清洗干净,不干净的海绵中含有金属颗粒,或含硫的海绵都会损坏烙铁头。 (4)人体与烙铁是否可靠接地,人体是否佩带静电环。 2、焊接步骤 烙铁焊接的具体操作步骤可分为五步,称为五步工程法,要获得良好的焊接质量必须严格的按下图五操作。 按上述步骤进行焊接是获得良好焊点的关键之一。在实际生产中,最容易出现的一种违反操作步骤的做法就是烙铁头不是先与被焊件接触,而是先与焊锡丝接触,熔化的焊锡滴落在尚末预热的被焊部位,这样很容易产生焊点虚焊,所以烙铁头必须与被焊件接触,对被焊件进行预热是防止产生虚焊的重要手段。 3、焊接要领 (1)烙铁头与两被焊件的接触方式(图六所示) 接触位置:烙铁头应同时接触要相互连接的2个被焊件(如焊脚与焊盘),烙铁一般倾斜45度,应避免只与其中一个被焊件接触。当两个被焊件热容量悬殊时,应适当调整烙铁倾斜角度,烙铁与焊接面的倾斜角越小,使热容量较大的被焊件与烙铁的接触面积增大,热传导能力加强。如LCD拉焊时倾斜角在30度左右,焊麦克风、马达、喇叭等倾斜角可在40度左右。两个被焊件能在相同的时间里达到相同的温度,被视为加热理想状态。 接触压力:烙铁头与被焊件接触时应略施压力,热传导强弱与施加压力大小成正比,但以对被焊件表面不造成损伤为原则。 (2)焊丝的供给方法 焊丝的供给应掌握3个要领,既供给时间,位置和数量。 供给时间:原则上是被焊件升温达到焊料的熔化温度是立即送上焊锡丝。 供给位置:应是在烙铁与被焊件之间并尽量靠近焊盘。 供给数量:应看被焊件与焊盘的大小,焊锡盖住焊盘后焊锡高于焊盘直径的1/3既可。 (3)焊接时间及温度设置 A、温度由实际使用决定,以焊接一个锡点4秒最为合适,最大不超过8秒,平时观察烙铁头,当其发紫时候,温度设置过高。 B、一般直插电子料,将烙铁头的实际温度设置为(350~370度);表面贴装物料(SMC)物料,将烙铁头的实际温度设置为(330~350度) C、特殊物料,需要特别设置烙铁温度。FPC,LCD连接器等要用含银锡线,温度一般在290度到310度之间。 D、焊接大的元件脚,温度不要超过380度,但可以增大烙铁功率。 (4)焊接注意事项 A、焊接前应观察各个焊点(铜皮)是否光洁、氧化等。 B、在焊接物品时,要看准焊接点,以免线路焊接不良引起的短路 4、操作后检查: (1)用完烙铁后应将烙铁头的余锡在海绵上擦净。 (2)每天下班后必须将烙铁座上的锡珠、锡渣、灰尘等物清除干净,然后把烙铁放在烙铁架上。 (3)将清理好的电烙铁放在工作台右上角。 六、锡点质量的评定: 1、标准的锡点: (1)锡点成内弧形 (2)锡点要圆满、光滑、无针孔、无松香渍 (3)要有线脚,而且线脚的长度要在1-1.2MM之间。 (4)零件脚外形可见锡的流散性好。 (5)锡将整个上锡位及零件脚包围。 2、不标准锡点的判定: (1)虚焊:看似焊住其实没有焊住,主要有焊盘和引脚脏污或助焊剂和加热时间不够。 (2)短路:有脚零件在脚与脚之间被多余的焊锡所连接短路,另一种现象则因检验人员使用镊子、竹签等操作不当而导致脚与脚碰触短路,亦包括残余锡渣使脚与脚短路 (3)偏位:由于器件在焊前定位不准,或在焊接时造成失误导致引脚不在规定的焊盘区域内 (4)少锡:少锡是指锡点太薄,不能将零件铜皮充分覆盖,影响连接固定作用。 (5)多锡:零件脚完全被锡覆盖,及形成外弧形,使零件外形及焊盘位不能见到,不能确定零件及焊盘是否上锡良好. (6)错件:零件放置的规格或种类与作业规定或BOM、ECN不符者,即为错件。 (7)缺件:应放置零件的位置,因不正常的原因而产生空缺。 (8)锡球、锡渣:PCB板表面附着多余的焊锡球、锡渣,会导致细小管脚短路。 (9)极性反向:极性方位正确性与加工要求不一致,即为极性错误。 3、不良焊点可能产生的原因: (1)形成锡球,锡不能散布到整个焊盘? 烙铁温度过低,或烙铁头太小;焊盘氧化。 (2)拿开烙铁时候形成锡尖? 烙铁不够温度,助焊剂没熔化,步起作用。烙铁头温度过高,助焊剂挥发掉,焊接时间太长。 (3)锡表面不光滑,起皱? 烙铁温度过高,焊接时间过长。 (4)松香散布面积大?烙铁头拿得太平。 (5)锡珠?锡线直接从烙铁头上加入、加锡过多、烙铁头氧化、敲打烙铁。 (6)PCB离层?烙铁温度过高,烙铁头碰在板上。 (7)黑色松香?温度过高。 12月10日 【转帖】如何手工焊接表贴封装IC手工焊接表面元件是个细活。无论你是焊在表贴万能板表贴万能板 上还是焊在开好的PCB上,其细致程度不亚于修钟表,甚至不亚于一次外科手术。我甚至认为应该为焊接人评个起码6级工人。 虽然需要比较多的技巧,但毕竟是可以手工操作的,如我这般菜鸟也能成功焊成,毕竟事在人为。 在工具上,最好有热风枪,倒不是在焊接上它有很大帮助,但至少你焊坏了,可以拆下来再焊一次。在助焊剂上,我觉得酒精和松香溶液比较好用,因为它有粘性,可以固定IC。镊子不可少,至于放大镜也是不可少,最好不是那种绿玻璃的放大镜。还有擦烙铁头的海绵,时不时要擦一下。至于擦汗的毛巾就自便了。 不论焊盘是否镀锡,在焊之前,先给焊盘上一层锡,因为这一层锡在焊接好之后是主要接触面焊接面。另外一个焊接面是管脚的末端。上锡的效果要做到薄、均匀、光滑,这样它在放上IC后会方得很平整。可以用烙铁投放平,顺焊盘方向涂抹,然后再分开粘连部分。完成后检查一遍,这很重要,因为如果这时候有粘连的焊盘,到后面都是白做了。每一个步骤后的检查都很重要,因为这是个细活。 然后就是整理管脚了。我用的镊子是圆规上用来蘸墨水画线的那一端的夹子,我还没有发现更好的工具。不论是新片子,旧片子,很多管脚都歪向一侧,主要要整理成间距一致,不然对不上焊盘是很郁闷的一件事。 接下来,把IC放上焊盘,可以把IC管脚底面刷上一层助焊剂,有助于焊接上底面,但这样做过一段时间还没有对准焊盘能把管脚粘在焊盘上。把IC放在焊盘上,逐条边把管脚对齐,这个是体现细活的表现的地方了,你可以按着IC轻轻敲击来微调偏移等等。反正办法是人想的。如果能把管脚对准了,可以焊死对角的的管脚固定IC。然后终于可以歇一口气了-------- 接下来是焊接管脚了,焊接管脚前可以刷上助焊剂,稍干时,就可以可以在上面“刷”(横刷竖刷都可以)熔融焊锡了,其实在这个阶段不太容易罢管脚粘连上,但如果粘连上了,可以再刷一次助焊剂,再做一次,往往就能把粘连的焊锡带出来。但第二次粘上就不好带出来了。检查时用针拨动管脚,看看是否能拨动,补焊一下。如果顺利的话,焊接能一次成功,但总是不顺利的。 如果焊锡老窝在管脚缝隙里就不肯出来怎么办。正确的做法是:握紧拳头,然后念齐天大圣,也可以把多股铜线剥开,蘸上助焊剂,然后和烙铁头一起加热,融化那些粘连得锡,然后再带出来,掌握住焊锡在变成固体前都有一刻粘稠,那时带出来效果最好。 另外,在焊接时要把握住焊锡的特性,大概多长时间融化,多长时间凝固,不要过分加热焊盘,否则焊盘会脱落的。 怎么取下表贴的IC呢,最好使用热风枪,均匀加热,慢慢翘动,有反映再加力,然后再换个方向再做,直到取下来,不要怕时间长,如果加力撬下来,会把焊盘剥落。 或者采用拉线法,用钢丝(琴弦不错)穿过若干条管脚里面的缝隙,用烙铁加热受力管脚,逐个拉出(是拉出底下的焊锡,不是拉出管脚或者别的什么东西),但不可对拉出的那条管脚再加热,不然又焊上了。 总之细致总是要的。 <a href='http://www.99digital.com/products/smdboard.htm'>www.99digital.com如转贴请注明出处</a> 11月23日 Failed to load module "ruby.so" (GEMS)Spend the whole day to fight with ruby.so.
When I load-module ruby in SIMICS,
It shows:
Error loading module 'ruby': Failed to load module 'ruby'
('$home_directory/gems/simics_3_workspace/x86-linux/lib/ruby.so'): "cannot open shared object file: No such file or directory" At the first look, I thought no such file or wrong directory. However, ruby.so is there correctly.
Then I use ldd ruby.so to list all dependency libraries.
libstdc++.so.6 and libsimics-common.so not found.
Modify /gems/ruby/module/Makefile
give the right direcotries for these two libraries.
make again.
SAD!! Story didn't stop here.
gcc 3.2.3 needs libstdc++.so.5, but gcc 3.4.6 needs libstdc++.so.6
I used old gcc 3.2.3 to compile ruby.so, but ruby.so tried to link libstdc++.so.6.
Must somewhere GCC isn't right.
I traced the whole compile procedure, read nearly 10 Makefiles.
Finally, I found SIMICS has it's own Makefiles, and one of them ($GEMS/simics_3_workspace/compiler.mk) is used to specify GCC. I changeed CC=gcc to CC=/usr/bin/gcc (which is old gcc version 3.2.3)
Now this problem was resolved.
My conclusions:
If still want to use old gcc version to compile GEMS, there are two places in which we have to check gcc and library path: $GEMS/common/Makefile.common $GEMS/ruby/module/Makefile $GEMS/simics_3_workspace/compiler.mk 感慨:
发现问题和解决问题过程是艰难的,但是最终找到的原因和结论却非常简单。
11月15日 多CPU的ID在SMP多CPU的机器上CPU的ID号并不一定是连续取的. 这ID号不对可把我害惨了。 与此相关的常用命令taskset, top, mpstat (solaris中用prstat) , sar, ps, iostat,
10月31日 SUN SPARCThere have been three major revisions of the architecture. The first published revision was the 32-bit SPARC Version 7 (V7) in 1986. SPARC Version 8 (V8), an enhanced SPARC architecture definition, was released in 1990. SPARC V8 was standardized as IEEE 1754-1994, an IEEE standard for a 32-bit microprocessor architecture. SPARC Version 9, the 64-bit SPARC architecture, was released by SPARC International in 1993. In early 2006, Sun released an extended architecture specification, UltraSPARC Architecture 2005. UltraSPARC Architecture 2005 includes not only the nonprivileged and most of the privileged portions of SPARC V9, but also all the architectural extensions (such as CMT, hyperprivileged, VIS 1, and VIS 2) present in Sun's UltraSPARC processors starting with the UltraSPARC T1 implementation. UltraSPARC Architecture 2005 includes Sun's standard extensions and remains compliant with the full SPARC V9 Level 1 specification. The architecture has provided continuous application binary compatibility from the first SPARC V7 implementation in 1987 into the Sun UltraSPARC Architecture implementations.
The LEON3 is a synthesisable VHDL model of a 32-bit processor compliant with the SPARC V8 architecture. The model is highly configurable, and particularly suitable for system-on-a-chip (SOC) designs. The full source code is available under the GNU GPL license, allowing free and unlimited use for research and education. LEON3 is also available under a low-cost commercial license, allowing it to be used in any commercial application to a fraction of the cost of comparable IP cores. |
|
|