博文
关于dspbuilderblock.v库的问题(2008-06-01 16:18:00)
摘要:以下是我个人做一个小系统的经过:贴出来共享,如有谁能找到方法解决Error: WYSIWYG RAM primitive "ram_block1a2" must have Port A, Address port or parameter specified这个问题,给我留个言,因为 这个导致我去用dsp_bulder 中的RAM,再遇到问题,才解决了。
以下是我在EDACN论坛上发的贴和自己回的贴,我给他拷贝过来了。同时,也给我们提供了一种思路,若需要用的一些模块没有IP,而写起来又会相当复杂,想想能否利用DSPBUILDER来构建也不失为一种好的方案。它拥有较有好的GUI,搭建一些较复杂的算法是比直接用HDL来描述是简单多了。效率方面我也不清楚,估计会低一点.
我在一个系统中用到了一个ram 的lpm,使用上是没问题的,可在分析与综合阶段就出现错误:
Error: WYSIWYG RAM primitive "ram_block1a2" must have Port A, Address port or parameter specified
此后我就打算使用DSP_builder中的dual -port ram
使用后生成的vhdl文件,我再想将其升成symbol file图形文件时,则出现加载库的问题,
错误如下:Error (10481): VHDL Use Clause error at dsp_ram.vhd(27): design library "dspbuilder" does not contain primary unit "dspbuilderblock"
此时我上dsp_builder 与quartus II安装目录中找相关的库文件,却找不到dspbuilderblock.vhd这个文件, 不知怎么解决?大家给点意见?
能否给讲讲dsp_bulder 生成文件vhdl文件的相互关联?
我相信这是可以实现的,只是我没有找到适当的方法,或者知识还不够。厂商给我们的是一个SOPC的理念,在这种思想的指引下,符合它的理念的就应该能实现的。一个偶然的巧合,我对一个模块进行了一下仿真,因为在DSP中生成的模块,里面含有两个tcl 脚本文件,一个是用于测试的,tv_*.vhd,假如你需要......
系统控制器免费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文不太好的朋友可以参考着读。同时多谢这位网友提供。......
关于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中原来有内容,它会先进行验证,如果内容一样,它将不进行檫除操作,也不进行写操作,直接结束,如果内容不一样,则先进行檫除操作,再进行写操作。
......
关于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......
数字时钟vhdl代码(2008-04-22 20:59:00)
摘要:
同上一篇一样,也是做过的实验 ,这里只发一个顶层文件给大家,提供一个整体的思路,因为整个设计包括比较多的vhdl文件,所以不便于上传,
----------the clock top design file
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity clock is
port(clk_20m : in std_logic;----20M晶振输入
rst : in std_logic;----复位按钮(总清0)
clk_dis : in std_logic;---扫描频率
--clk_con : in std_logic;---总控制台计数频率
alarm_set : in std_logic;
choose_mode : in std_logic;---先择12小时制(0)还是24小时制(1)
set_min : in std_logic;--设置分的单脉冲发生器
set_hou : in std_logic;---设置小时的单脉冲发生器
display7 : out std_logic_vector(6 downto 0);--7个数码管的公共的7端
select6 : out std_logic_vector(5 downto 0);--6个片选端
alarm : out std_logic);---闹钟输出
end entity clock;
--------------......
矩阵键盘的VHDL(2008-04-22 20:56:00)
摘要:这也是做实验时编的代码,由于做完将近一年了,当时也没有注意到要防抖,所以这个程序没有进行防抖,需要进行防抖 的朋友可以加锁存器进行锁存。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity matrix_key is
port(clk : in std_logic;
display : out std_logic_vector(13 downto 0);
row : buffer std_logic_vector(3 downto 0);----行线
line : in std_logic_vector(3 downto 0));--列线
end entity matrix_key;
------------------------------------------------------
architecture behave of matrix_key is
component division is
generic (data : integer:=10);
port(clk_in : in std_logic;
clk_out : out std_logic);
end component;
signal read_data : std_logic_vector(3 downto 0);
signal scan_data : std_logic_vector(1 downto 0);
signal clk_temp : std_logic;
begin
U1: division port map(clk,clk_temp);
P1: process(clk_temp)
variable temp : std_logic_vector(1 downto 0);
begin
if ......