博文
系统控制器免费IP核的应用(转)(2008-05-25 11:25:00)
摘要:系统控制器免费IP核的应用
2007-10-24 13:55:20 作者:不详 来源:互联网 浏览次数:341 文字大小:【大】【中】【小】
摘要:设计复用是提高设计效率的有效方法,而IP核的使用是使设计复用得以进行的主要手段之一。由于IP核的开发成本高、价格昂贵,一些国际组织和个人致力于免费IP核的发展。如果使用得当,免费IP核可以成为电路设计人员的宝贵资源。本文以系统控制器的免费IP核为例,介绍了如何正确使用免费的IP核,本文使用的免费资源来自于Opencores组织。
关键字:免费资源;IP 核;系统控制器
1.前言
随着集成电路业工艺的发展,单位面积晶体管的数量急剧增加。按传统的方法,能满足芯片功能和时序要求设计的IC设计工程师,产能约为100门/天,要完成1200万门的芯片设计需要500人年。设计复用(Design Reuse)技术成为解决问题的有效方法。根据业界经验,任何模块如果不作任何修改就可以在10个或更多项目中复用,都应该开发成IP 。基于IP的数字IC设计方法是有效提高设计产能的关键技术。IP核又称IP (Intellectual Property)Core指具有独立知识产权的电路核。设计复用不但适用于ASIC设计,也适用于CPLD/FPGA。在该类电路设计过程中,由于开发工具的通用性、设计语言的标准化,使得设计过程基本与器件硬件特性无关,成功设计的各种功能电路模块(core)具有很好的兼容性(Compliable)和移植性(Portable),恰当的复用使设计效率大大提高。
用于系统集成(Integration)的IP Core通常是私有的,必须向开发商购买,这些花费对资金短缺的设计团体来说是很大的负担。而特殊的设计及测试工具给私有IP Core的整合带来一些困难。有时私有IP Core还可能缺乏足够的文档,且购买者无法得到源代码使得整合工作更加困难。以上原因使IP core 的推广没有预想地那样顺利。
作为一种尝试,国际上一些非盈利组织(如Opencores等)和个人致力于自由(或称免费,Open 或Free)IP Core的发展,为设计者提供遵循GNU GPL或LGPL 协议的免费开源IP core。本文以......
nios II硬件接口中的avalon总线(2008-05-24 18:31:00)
摘要:原文地址:http://blog.ednchina.com/stephen100/49784/message.aspx
http://blog.eccn.com/u/edafans/archives/2007/146.htm#185
对于E文不太好的朋友可以参考着读。同时多谢这位网友提供。......
C++ volatile用法(转)(2008-05-13 19:00:00)
摘要:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1) 并行设备的硬件寄存器(如:状态寄存器)
2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3) 多线程应用中被几个任务共享的变量
回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。
1)一个参数既可以是const还可以是volatile吗?解释为什么。
2); 一个指针可以是volatile 吗?解释为什么。
3); 下面的函数有什么错误:
int square(volatile int *ptr)
{
return *ptr * *ptr;
}
下面是答案:
1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
2); 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
3) 这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:
int square(volatile int *ptr)
{
int a,b;
a = *ptr;
b = *ptr;
return a * b;
}
由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:
long square(volatile int *ptr)
{
int a;......
关于nios II系统中flash的烧写(2008-05-10 20:23:00)
摘要:在此将nios II 中falsh中的烧写详细 地总结一下。
一般中需注意二点:
1、 目标板问题,这是由于altera公司推荐用其自己的开发板而造成的,在quartus II7.0以上版本中,则不需要定制目标板。这是一个很大的改进,因为开发板不仅altera公司可以作,其他公司也可以开发。
2、对于需定制目标板时的应注意的问题。首先是得先择target board这一项了,具体型号与大体型号一致就可以,比如说我用的是21嵌入式工作室的开发板,芯片为ep2c5,而quartus II用的是5.1,里面没有对应的芯片号,只要选择cyloneII系列就可以了,选择ep2c35,另外这个时候得将你的cfi 核里面的元件符号选择U(n),具体是几可以随便,这个很容易理解,altera公司的目标板上对应的芯片编号估计已经确定了,另外就是在引脚分配上那一项,一定要全部选择assign in the projet,即引脚在工程中分配,要不然你最后一步是不能产生系统的。
另外还有一个小问题,可以 是NIOSII软件部分的,在那写flash时如果出现 verify 0x0000020之类的错误,你可以参见我这上面的另一篇文章,分析得很详细。
申明一点:nios II中对flash的写工作大致是这样的,这个也是今天偶然发现的,你可以从烧写时nios II中的信息得到,如果flash中原来有内容,它会先进行验证,如果内容一样,它将不进行檫除操作,也不进行写操作,直接结束,如果内容不一样,则先进行檫除操作,再进行写操作。
......
万信wt958MP3维修维修实例(2008-04-29 19:11:00)
摘要:同学看我在淘宝上买的MP3,说,真好!早知道我也顺便买一个,我说:你原来不是有MP3吗?他说坏了。我对他笑着说,拿过来吧,我给你看看。我也不能说给他修修,要不修不好了咋办?其实我也重来没修过。顺便说一下,我那同学不是学电子的,不是和我一个专业的。他又说你能修好就送你了,反正我也不要了。
第一年当然得看一下品牌,worth,没听说过,好像是做复读机的,(我的印象中是这亲),网上 一搜,果然是,他的主要问题是插到USB上都没有反应,换数据线后是无法识别,这肯定是驱动没装上了,问他有没有光盘,他说不见,我也没办法了,上公司网站上去找,这种小品牌的一般都不会有,对数码产品都 是一样,还好后来在一个论坛找到了。
MP3原理我还是明白的,就是用个主要的解码芯片来将flash中的MP3格式的音乐解码出来,在 上论坛找到了这个MP3的固件升级文件,这些都是必要的,现在接上USB能能识别了,但是就一个硬件符号,盘符都没有,也开不了机,排除没电这个因素后,此时固件升级提示不能识别flash类型,我估计8成是闪存芯片虚焊 了。
只能折开看一看了,借了小的螺丝刀,打开后,也看不出什么,不过这过程有个小插曲,我原来没折之前用一个读取解码芯片的软件,读出来是炬力2085,后来拆开后好像是2051,软件读取不可靠。所以对于买MP3 的朋友来说,有时有软件来读取芯片也不一定可靠,然后我看了看闪存芯片,用的是现代的,现代的在低档的MP3中用得较多,高档产品一般用三星,解码芯片目前高档的一般是philip的,或是瑞芯的较多,中档一般是炬力,低档的一般是凌阳,(台湾的 一家IC公司),闪存一看也看不出脱焊,我给使了点劲将闪存芯片按了按,然后再进行了固件升级,这一个顺得通过。
开机,音乐正常播放。呵呵!
装 上后,打电话还给了他。收到一声感谢!
昨天他和我一说,他MP3又坏了,我问怎么回事,他说他想拆开看看,把一个芯片开掉下来了,我看了看,那个闪存芯片就被他给用硬功直接弄下来了。这回我也没招了,我也没有那么好的烙铁和那么好的技术来给他焊接了。
看来也是我的错,我以前拆开就应该给他看看的。
我给他修花了将近一天的时间,上午10点到下午4点,其中找资料、借螺丝刀等。被他想看看这么一下就给弄没了,心里很是不爽!
......
one_leg_living(2008-04-29 18:41:00)
摘要: 其实这篇文章已经写了很久了,从4月13号那天扭了脚开始的吧!好像是边听歌边写的,干了将近2个小时,把那几天的事记流水帐一样的记了下来。主要原因就是两个,第一是扭脚的几天确实心情不怎么好,白天寝室要到16点才有点,用了笔记本中将近两个点的电池来写了。第二,也是主要原因,听了一个师兄的报告,很有点想法,是我们这98级左右的毕业生,记得不太清了,很DE的一个人,本科不怎么读书,也就是编程比较好,他说他的大学就是小说,程序,酒 这么过去的,其中有句话很经典,他说那时候看王朔,看着挺感人,于是就上课就免了,确实太感 人了,找同学去喝点.
毕业后留在了学校的网络中心,做得相当不错,再后来考上计算机学院研究生,变为了那里的老师,这次参加全国人事处那个系统分析师的考试,进入全国前50名,(是国家计算机专业水平最高的一个认证,具体名我记不清了),
他说他们老师说了句非常不简单的话,对他影响很大很大,不管错的对的,时常记下你的想法。对此我也有点想法,有些东西不能总靠自己的记忆力,时间长 了总会忘,特别是解决了的问题。我有时候给别人修的电脑,当遇到相同的忎病的时候,我总是想不到上次我怎么解决的,而是又重新分析一次,而得出了和以前维修的一样的结果。而这位师兄说的是维修一台打印机的事,也照样是花了好几个小时得出了和以前一样的结论。而类似的事情很多,有时候自己编的程序,你等段时间遇到一个类似的问题,需要重新分析,而如果当你找到你原来所写的代码的时候,有时候你可能发现一种更简便的方法,或者是原来的问题又找到了一种新方法。
上天真会开玩笑,在这个阳光明媚的春天,(对北国的春
城长春来说,4月也只能说是春天),他竞然赐于了我同霍金一样的待遇,差点让我坐着轮椅,其实我并不想去接受这种上天的高档赐品。第一,我不信任何教,所以也就不信老天,我心目中的老天也就是偶然发生事情的一种意念;第二,我并不想毫无回报的去接受任何东西,包括爱。其实爱是无私的,大家都知道,如果不是无私的那就不能叫做爱。
事情是这样的,大周末,外面的太阳在狠狠地诱惑着我,我向来对大自然这种无私的馈赠非常乐于接受,似乎很愿意用一身的汗水去与他交换,我跑到了篮球场,比我预想的人还要多点。几......
关于fifo的一些概念其quartus II中IP的使用(2008-04-25 15:28:00)
摘要:下面这一段是网上找的,刚开始也不太理解,只是觉得这个东西做缓冲用差不多,和数据结构中的队列有些类似。当我想用它做为一个小组件去封装sopc中的一个compont时,使用其IP则是自然的了,打开了帮助文件,啃了一会儿,明白了,可能有些朋友 不明白的一些引脚主要要aclr,这个是清零用的,它一有效将会把这个内部的存储单元全部清空,还有wrusedw与reusedw这两个,它们分别是与wrclk及reclk同步输出 的,输出内容是当前时钟下fifo中的数据个数(
The number of words that are currently in the dcfifo.
The number of words that are currently in the dcfifo.
)
FIFO(First IN First Out)先进先出电路
实现数据先进先出的存储器件,FIFO的用途:普遍用作数据缓冲器,可以用在电话通讯网络的前端来同步输入的网络数据包。也可以用于顺序数据的缓冲,比如音频信号或视频信号。另一个广泛的应用是在处理器之间的通讯中。
FIFO的基本单元是寄存器,作为存储器件,FIFO的存储能力是由其内部定义的存储寄存器的数量决定 . FIFO存储器一般以数据量的深度X宽度的形式来说明所采用的基本结构
第一代FIFO存储器是基于“导向”理论的,数据从输入端被移到输出端,所需要的时间称为导向时间
每一个数据字需要一个状态触发器,因此对数据锁存的控制只能实现很短的FIFO的操作
以长度为8的FIFO为例说明其工作原理。入图所示
____________________
D, C, B, A ——> | 1 | 2 | 3 | 4 | 5&......
VGA显示原理与VGA时序实现(2008-04-25 11:50:00)
摘要:
#usrbar{padding:4px 10px 3px 0;font-size:12px;height:19px;line-height:19px;color:#000000;font-family:Arial;text-align:right;background:#ffffff;filter:alpha(opacity=65);-moz-opacity:0.5;width:auto !important;width:100%;letter-spacing:normal}
#usrbar a,#usrbar a:link,#usrbar a:visited{color:#0000CC;text-decoration:underline}
#ft{clear:both;height:20px;line-height:20px;color:#666666;font-size:12px;font-family:Arial;text-align:center}
#ft a,#ft a:link,#ft a:visited{color:#7777CC;text-decoration:underline}
#usrbar,#usrbar a,#usrbar a:link,#usrbar a:visited,#ft,#ft a,#ft a:link,#ft a:visited{letter-spacing:normal}
转 贴
if(document.getElementById("m_blog"))
{
var imgarray = document.getElementById("m_blog").getElementsByTagName('img');
var imgw = document.getElementById("m_blog").offsetWidth;
imgw =imgw-40;
for(var i=0; i=imgw) imgarray[i].width=imgw;
}
}
// Fix ff bugs
var blog_text = document.getElementById('blog_text'......
fpag控制vga的入门资料(2008-04-24 17:17:00)
摘要:
今天想用fpga来控制vga接口,无从下手,对这个接口的定义,是没有一点了解,上网上找了找,明白了些许,其中网上的材料对消隐这个概念没有写清楚,对于我们这些没学过电视原理之类课程的人来说,这些相对是很困难的,我的理解是行消隐就是当扫描到一行的最右边时电子束自动转到下一行的最左端的这个过程就是行消隐了,场消隐类似,这此不再说了,另外用fpga来控制vga显示的程序比较简单,我是选择用vhdl实现,不过我想是做一个vga的IP,然后将它放入NIOSII系统中去,这样就更能体现sopc.
下面这个文章是转载网上的,对原创作者表示敬意!!
使用 FPGA 控制 VGA 显示
function doZoom(size){var zoom=document.all?document.all['Zoom']:document.getElementById('Zoom');zoom.style.fontSize=size+'px';}
字体大小: 小 中 大 作者: 来源:瑞芯科技 日期:2007-02-07 点击:1337
显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备。在 FPGA 的设计中可以使用很少的资源,就产生 VGA 各种控制信号。这个示例在 RHicSP2200B FPGA 开发板/学习板上使用 VGA 接口在显示器上显示了文字以及简单的图形,可以作为VGA 显示设计的参考,如果在使用这个例子的过程中有任何问题都可以通过 邮件 calvin_richic@yahoo.com.cn 或者calvin_richic@hotmail.com 联系作者。
显示器术语
像素与分辨率
显示器的显示方式有两种 : A/N(......
Nios II中Verifying 00000020 ( 0%)类似错误的解决(2008-04-23 14:14:00)
摘要:
今天用上sdram与falsh做为memory,在NIOSII中则出现了以下的错误,
ownloading 00000020 ( 0%)
Downloaded 21KB in 0.4s (52.5KB/s)
Verifying 00000020 ( 0%)
Verify failed between address 0x20 and 0x5203
Leaving target processor paused
调试时出现的,编译没有问题,关于出现这个问题的原因很多,以下是NIOS II官方论坛的讨论,希望能对大家有些帮助
具体的地址为:http://forum.niosforum.com/forum/lofiversion/index.php/t3192.html
我这次的错误也找到了,总结一下.如果你出现类似的错误,90%是你的sdram通信不正常,关于具体的原因,可以用排除法一步一步去找,(确定是否是这个原因的方法很简单,你可以做一个最小系统,不使用sdram,使用on_chip_memory看系统能否跑起来,这样可排除其它可能性),另外如果是硬件问题,你可以想办法观察sdram的具体时序,看其是否正确?一般比较多的是引脚分配不对,导致无法与sdram进行通讯,我的就是这样.因为大多用的开发系统他们提供给你的中人是一个tcl文件让你来分配引脚,,当你在你自己的系统中写的引脚名称和上面分配的不一样时,就导致了不能与sdram进行通讯.
2008年5月13号更新,
对这个问题更有一点看法,
从这句Verifying 00000020 来看,验证地址为0x 00000020 出错,然后你打开你的硬件工程,进入到sopc——builder中,看这个地址对应的那个IP是什么?应该就是nios II与那个组件之间的通讯有问题,我的在这个地址分给了sdram,所以毛病也就是在sdram当中了;而sdram不能通讯问题的可能性也很多,如时序定义不对,引脚分配错误,忘记给sdram的时钟与系统时钟需移相-72度等,这些都是很常见的错误。
Help - Search - Members - Calendar
Full Version: Infamous Verify Fa......