数字IP信号和控制信号0是不是有效数字一回事

【图文】全数字IP楼宇对讲系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
全数字IP楼宇对讲系统
上传于||文档简介
&&全​数​字​网​络​化​楼​宇​可​视​对​讲​系​统
大小:4.16MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢DDR3 IP 初始化控制问题,local_init_done信号一直不拉高 - FPGA|CPLD|ASIC论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
DDR3 IP 初始化控制问题,local_init_done信号一直不拉高
16:15:45  
最近在做DDR3的项目,使用的是stratix iv芯片,使用PHY II产生的核中有的example仿真时发现local_init_done信号过了有劲6000us才拉高,反正用了有一个小时,本来以为可能是tb的问题,但到最后上板调试的时候却也发现local_init_done信号一直没有拉高,有大神遇到过同样的问题么,解决方法是什么
16:53:53  
这个问题我遇到过,不过是DDR2的phy_init_done一直拉不高,觉得它死在那个状态的原因是DDR2 IP核初始化过程会有验证过程,如果验证出错就认为初始化没有完成,所以就死在那个状态一直在验证。
首先你要确认DDR2 IP 核上的所有信号是否都用到了,我当时有过因为DM引脚没有分配造成初始化无法完成。
然后就是确认硬件没有问题,例如DDR2芯片是好的,电压是正常的等,我当时因为DDR2 芯片有过问题,一直不能初始化完成。
08:58:28  
我这个是按着他给的例子来弄的,像必须用到的引脚我都分配了,本地的信号有没用到的我就没接出来,像local_refresh_ack,还有就是直接在里面拉低或拉高,这些我觉得都应该不是照成这个结果的原因,像你说的硬件问题,因为硬件电路不是我做的所以就不得而知了
08:59:33  
生成核的时候给的例子按理说可以验证你的设计对不对,但是吓到板子也是这个问题
20:56:06  
生成核的时候给的例子按理说可以验证你的设计对不对,但是吓到板子也是这个问题
您好!请问你的DDR3初始化问题解决了吗?是哪里出问题了呢!我也是这个问题 解决不了,下载到KC705开发板上后,初始化信号一直无法拉高,管脚啥的分配全是严格按照开发板原理图设置的。。。谢谢!急求答案哇
等待验证会员
22:47:23  
上电之后,加一个延时1000个clk的复位信号试一下,复位ddr ipcore的。另外你可以再测试下,ddr的参考时钟是否正确。
18:13:44  
上电之后,加一个延时1000个clk的复位信号试一下,复位ddr ipcore的。另外你可以再测试下,ddr的参考时钟是否正确。
您好!按照您说的试了一下,延时1000个mmcm clk 确实使初始化信号拉高了,但是500个跟2000时钟延迟都行不通,这是为什么呢
14:10:40  
真没有碰到过,还需要延时1000个clk,我的都能拉高啊。。。
22:09:19  
你好,我现在也在用stratix iv芯片做DDR3,QDR II控制,local_init_done信号也是没有拉高,请问你之前的问题解决了吗?还有硬件配置有哪些要求?现在做项目,已经改了好几版了,很急。看到的话能加个QQ好友,一起讨论下吗?我的qq号,解决问题有红包。多谢了!
Powered by好奇怪,为什么我的网络ip和别人一样?是不是因为我的电信号和别人一样?_百度宝宝知道测ip信号专用帖,数字越高越好_iphone吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,584,089贴子:
测ip信号专用帖,数字越高越好收藏
欢迎吧友帖个信号…-75什么的实在悲剧…
越大越好还是?
-81,什么水平?
回复3楼:越大越好…我觉得我要去马路上测了
是绝对值越大越好
回复7楼:= . =
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或用FPGA做数字信号处理(4)
今天给大家介绍数字信号处理中用的最多的处理方式:FFT。大家知道FFT是一种现代信号处理方式,其算法如果用C语言实现是很麻烦的。不过Altera为我们提供了大量的IP核,其中就包括了FFT核。IP核(Intellectual
core)是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。大家可以将FFT
IP核看成是matlab中的一句代码fft(),使用起来非常方便快捷。
但是目前网上的文献都是只提到了使用FFT
IP核,没有一篇文档能够教大家如何使用FFT核。相比于FIR等IP核来说,FFT核的使用还是稍微有些麻烦。本文旨在帮助大家认识并且学会使用FFT
1、新建一个mdl,将必要的元件移入mdl,其中,FFT IP核位于Altera DSP Builder
Blockset-&MegaCore
Function。如图1所示。FFT核刚移入mdl时图标如图2。
2、双击FFT核,弹出一个对话框,可以设置FFT核的各项参数,比如FFT点数,数据精度,输入模式等。单击Parameterize,将Transform
Length设为512点,两个Precision都默认为18不用修改,如图3所示。
3、单击Architecture选项卡,将I/O Data
Flow选为Streaming。Streaming即数据流模式,是最简单的方式,其大概工作模式是数据会不停的输入,需要进行FFT的时候进行相应的脉冲控制即可,但相应的会耗费较多的资源。如图4所示
4、点击Finish,再点击Generate便可以生成相应的FFT模块。生成结束后,点击Exit,此时电脑会卡一会儿,大家注意稍等片刻再进行下一步操作。
5、生成结束后,FFT模块会变样,大家按照图1将其连接好。接下来是进行最重要的环节:控制信号的设计。
控制信号的设计:
1、大家可以双击FFT核,在弹出的对话框中单击Documentation-&FFT User
Guide,大家找到“Figure 3&3. FFT Streaming Data Flow Architecture
Simulation
Waveform”,由时序图(图5)大家可以看出,sink_sop和sink_eop决定了输入数据的长度,sop指start of
pulse,eop指end of
pulse。sink_eop出现脉冲后,FPGA对sop和eop之间的数据进行FFT运算,经过一段时间,会以source_real和source_imag输出,同时会以source_exp输出标志位。值得一提的是,reset_n由0变1的时候产生复位,sink_valid和sink_ready始终为1,inverse等于0的时候是FFT变换,等于1的时候是IFFT。
2、大家继续往下翻pdf,找到“Figure 3&4. FFT Streaming Data Flow Architecture
Input Flow
Control”,由时序图可以看出sink_sop产生脉冲期间的数据是有效的,大家需要注意,如图6所示。同时,输出第一个数据时,source_exp会产生EXP0信号,如图7,也可以作为输出数据的首位地址信号进行判断。
3、现在生成仿真数据。在matlab中输入以下代码,产生一个长度为512,采样率10k,频率300Hz的复信号:
t=-T/2:1/fs:T/2-1/
I=2^16*sin(2*pi*f0*t)+2^10*randn(1,length(t));
Q=2^16*cos(2*pi*f0*t)+2^10*randn(1,length(t));
4、双击ROM,将depth改为2000,Number Of
Bits改为18,单击Initialization选项卡,将Initialization改为From MATLAB
array,在下面的MATLAB
Array中输入“[0,0,0,0,I]”,将此ROM改名为REAL。同理,在另一个ROM中也如此操作,只不过在MATLAB
Array中输入“[0,0,0,0,Q]”,将其改名为IMAG。
5、双击reset模块(名字是自己起的,模块就是Gate&Contorl-&Single
Pulse。后面的sop和eop也是如此,之所以图标不一样是因为改了参数,自动变了,很神奇吧),将Signal Generation
Type选为Step Up,Delay填1,如图8.
&6、双击sop,将Signal Generation Type选为Impulse,Impulse
Length填1,Delay填5,如图9。注意这里填5,为什么?注意之前ROM里,有效数据I或者Q之前有4个0,根据时序图图6,可以知道,SOP产生脉冲时刻的数据是有效的,所以这里要填5。后面的仿真会看到相应的时序图。
&7、双击eop,和sop一样修改,只不过Delay填512+5-1。512是FFT的点数,因为sop和eop采用了全局时钟,因此eop需要考虑sop的延迟,5是sop延迟的时间,-1是为了使sop和eop之间的长度为512点。如图10。
8、双击Io(Simulink-&Sinks-&To
Workspace)。这个模块可以将仿真结果传入matlab的workspace,非常方便。将Save
format改为Array,Variable name改为Io。另外的Qo和flag也如此修改,只不过Variable
name要变。
9、将最上方的仿真时间改为2000,点击仿真按钮。仿真结束后,双击进入Scope,不出意外的话,大家autoscale一下,能看见如下结果(图11)。前两行是输入,后两行是输出,第5行是sop,最后一行是source_exp。由输出可以看出FFT结果还不错。如果不出意外的话,现在matlab中应该多出一个Io,一个Qo和一个flag。双击flag,可以发现从第1088个数开始不等于0,这作为我们FFT输出结果的第一个有效值的下标,第1599个数开始恒定不变,这作为我们FFT输出结果的最后一个有效值的下标,共512个数,欧耶~~
10、在matlab中输入
out_I=Io();
out_Q=Qo();
out=out_I+j*out_Q;
amp=fftshift(abs(out));
w=linspace(-fs/2,fs/2,512);
plot(w,amp(end:-1:1))
可以绘制出FFT后的幅度谱,可以看出,FFT结果很理想,如图12。
11、最后看看时序对不对。把Scope里的图线在横坐标等于5的地方放大,可以看见图13的结果。当sop出现脉冲的时候,此时的输入数据确实对应有效,这和图6是一致的。将图线在横坐标等于1088处放大,可以看见,当exp信号变化时,对应输出信号也是有效的,如图14所示。这和图7也是一致的。同时1088也是matlab中flag第一次不等于0时候的值得下标,也是第二段matlab代码取输出有效值的首地址。
总体来说,FFT核用起来还是很方便的,大家最重要的是要学会看时序图,多尝试,多练习。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 0是不是有效数字 的文章

 

随机推荐