2007-7-10 23:36:33
我的OFDM毕设Quartus工程还原下载
自从我在网上贴出来了我本科的毕业设计以后,有许多网友跟我联系过,也问了不少问题,我在此对大家的关注表示感谢。 在交流的过程中,我发现问的最多的问题就是问我能不能发一份可运行的工程过去,或者是如何还原那个工程之类的。很多人在看完我写的毕设报告之后,都想进一步把工程运行起来看看。其实,在我毕业的时候,就已经把原来的工程删了,只留下了原代码。一个是因为我觉得自己做的并不好,没有留的价值。另外,VHDL代码都有了,如果真的熟悉VHDL语言和ALTERA的这一套东西的话,再生成一个新的工程是很容易的。但是现在看来,很多人即使下载了我主页上的代码,自己也懒得做或者不会还原我原来的工程。所以后来我仔细想了想,决定把原来的工程重新还原出来再传到主页上。 关于这个还原出来的工程,下面有一些说明: 软件方面,我使用的是从ALTERA网站上下载下来的7.1sp1的网络版。 关于IP,在工程中我使用了两个ALTERA出的IP,分别是Reed-Solomon和FFT。在我当时做这个工程的时候,用的两个IP的版本分别RS 4.0.1和FFT 2.2.x。x具体是0还是1我记不清了。现在随着Quartus软件的升级,好像是从6.0版开始,所有的IP的版本号就都和Quartus统一起来了,而且下载的时候也都是一次下载一个完整MegaCore IP的包,里面包含了所有的IP,不能再分开下载了。所以这次我在7.1sp1下面重做工程的时候,也下了最新的IP包,试图用最新版本的IP。其中RS的7.1版没有问题,但是新的FFT的7.1版真是垃圾,谁如果不信的话比较一下7.1版和2.2.x版的勘误表就能看出来了,真不明白为什么有那么多要命的bug还能把这个IP推出来。一模一样的工程只是换了新IP就不能工作了,害我花了三天时间也没完全调好。后来一想算了,为这事花太多时间不值得,于是我又装了一个早期的2.1.1版的FFT核,因为2.2.x在网上找不到了,如果有2.2.x的话,用这个更好。最后,现在的这个工程中,只有FFT是2.1.1版,这个其实没什么影响,不影响编译和仿真,只要记得在工程设置中把FFT的库的路径设置好就行了。 工程中指定了FPGA的芯片,但是没有分配管脚。芯片就是Cyclone的EP1C12F256C6,这也是我毕设时候板子上用的FPGA。如果想要下载的板子上验证的话还需要自己再指定芯片和管脚,并重新编译。 工程中包含了一个波形仿真文件,ofdm_sch.vwf,就是顶层实体在Quartus中的仿真。只接仿真就能看到最终结果,另外我同时也把FFT,IFFT等几个中间过程的重要输出接了出来,可以看到数据处理的具体过程。 仿真文件中指定网格大小(Grid size)为100ns,并依照这个大小生成了时钟,相当于在仿真中使用10MHz。我做毕设的时候,板子上的晶振分别用了一个10兆的和一个30兆的,运行起来都没有问题。但是再高的频率就没有实际试验过。不过工程应该还能运行在更高的频率下面的,用ALTERA的时序分析自己看下就知道了。 再一步步教下使用步骤,熟悉Quartus的可以跳过: 1、设置好Quartus的软件环境,把该装的IP都装好。如果找不到早期的FFT核,我在下面提供了2.1.1版的下载。 2、把ofdm_sch文件下载下来。rar文件。解压之后是一个qar文件,也就是Quartus工程的打包。 3、在Quartus里把这个qar当做一个新的工程打开。打开之后会自动生成新工程目录并包括了所有的原文件。 4、工程的顶层实体就是ofdm_sch.bdf,原理图文件。在原来的代码中我是用的vhdl写的顶层的连接,这次为了直观我用bdf文件画了一个顶层的连接。 5、编译工程(Ctrl+L),会报一堆warning,不过都没关系。 6、把那个vwf文件打开,用simulator tool仿真就行了。可以看到波形上的结果。 最后再重复声明一遍: 1、其实我这个ofdm的工程做的并不好,很多VHDL代码写的都不是很规范,所以不值得花太多时间在工程上面。真正想研究的话,看看我写的报告就行了,我毕设的精华都在报告上。 2、在跟我联系想要下载工程回去运行的兄弟们中,有不少都是想参考这个工程混毕设的。我不反对你这么做,但是我可以很负责地说,如果你只是简单地运行这个工程并看下仿真结果,是学不到东西的。真正做研究是需要花精力的。 3、如果对我做的工程感兴趣,非常欢迎跟我交流。或者有什么地方不明白也都可以问。 4、但是在提问之前,我拜托大家自己先尽量想一想,或者上网站查一查,不行了再提问。而不要一上来就不管不顾地把问题都堆给别人。之前有一些问题搞得我很头痛,要么太宽泛,没法回答;要么太简单,比如要我一步步教如何用Quartus。所以在这里说一下,也希望能相互体谅,大家的时间都是有限的,如果要是有的问题我没有回答请不要介意。 下载: OFDM通信系统基带数据处理部分的FPGA实现,工程文件ofdm_sch.rar,约2m。下载 ALTERA FFT MegaCore V2.1.1,约7m。下载 2008.4.24 关于FFTScale模块问题的集中解答 在OFDM中,要做IFFT+FFT变换并最终得到变换之前的原始数据。ALTERA的FFT模块采用的是block-floating-point模式,所以需要进行指数变换。具体的变换方法请参考文档FFT/IFFT Block Floating Point Scaling (ALTERA主页上搜AN404)。我其实就是参考的图2中的那个式子。 问我最多的问题是为什么FFTScale并没有依据exp1和exp2的值进行移位?原因是我当时的测试输入数据都是10以内的整数,所以仿真出来的FFT的exp总是一个常数。因此我就偷了个懒直接在FFTScale中根据经验的exp数据进行了移位,而不是每个时刻的exp1和exp2的值。还有人问为什么不在IFFT之后立刻先变换一次?这个当然是可以的。但是我因为当时的编码和解码都在一个FPGA上面,在加上我其实不需要exp的值,所以就不用变换了。 另一个问题是FFTScale到底移位了多少?为什么VHDL文件说明中要移3位但是实际只移了2位。这个我也记不清楚了。反正VHDL中的左移2位应该是不会错。其实具体应该移多少仿真一下看看IFFT和FFT的指数再根据64点FFT用公式算一下就知道了。另外顺带一提,shift_left是numeric_std包中的函数,这个库文件在altera的安装目录下面就有。
1.chenming
- 我是98级的本科生。这几天凑巧看到你的论文和你的本科工作,回头想想自己的本科的四年,感受到了很大的差距啊。
- 2007-9-10 11:33:34
2.cindy9730
- 你好,我想请问你,使用FFT IPcore 是不是一定要有Quartus 6.0以上,我现在用的版本是5.0,是不是不行?
- 2007-9-12 10:00:36
3.cidy9730
- 你好,我分别安装过fft ipcore2.2.1和2.1.1,安装后lib文件夹里vhdl程序以写字板打开都是乱码,这是为什么呢,我现在用的是quartus 5.0,在toolbench generate的时候都出错了。
- 2007-9-12 11:14:13
4.olivercamel
引自 chenming 我是98级的本科生。这几天凑巧看到你的论文和你的本科工作,回头想想自己的本科的四年,感受到了很大的差距啊。
多谢,过奖了。其实觉得真的还差得很远,总觉得知道的还是很少的,呵呵。
- 2007-9-14 2:55:21
5.olivercamel
引自 cindy9730 你好,我想请问你,使用FFT IPcore 是不是一定要有Quartus 6.0以上,我现在用的版本是5.0,是不是不行?
引自 cidy9730 你好,我分别安装过fft ipcore2.2.1和2.1.1,安装后lib文件夹里vhdl程序以写字板打开都是乱码,这是为什么呢,我现在用的是quartus 5.0,在toolbench generate的时候都出错了。
每个版本的Quartus都有自己对应的IP版本,互相之间应该是对应的,不然可能就会有问题。好像从7.0之后的Quartus和IP的版本号都统一了,就是7.1的Quartus对应相同版本的IP。但是如果你用5.0的话,用2.2.1的FFT应该是没问题的,因为我当时就用的是这个版本。建议你只保留一个版本的FFT,把其它的都卸载掉。然后看看IP安装的有没有问题。我也没遇到过你这样的情况,如果还搞不定的话再给我写邮件。
- 2007-9-14 3:03:03
6.cidy9730
- 这个问题已经解决了,非常感谢你,我现在正在参考你的论文,可能以后还会有问题麻烦你,谢谢了,祝好!
- 2007-9-14 10:49:21
7.zq
- 你好!
我用的是Altera的RS4.1.0的IP核,仿真的时候编码正确,解码不起作用,有几个warning。 不知道是什么原因,你可以把4.0.1版的IP核发我邮箱么?我在网上没找到:( 谢谢了!
- 2007-10-8 10:15:24
8.olivercamel
引自 zq 你好! 我用的是Altera的RS4.1.0的IP核,仿真的时候编码正确,解码不起作用,有几个warning。 不知道是什么原因,你可以把4.0.1版的IP核发我邮箱么?我在网上没找到:( 谢谢了!
你好,看到你留言了,我给你回了邮件。
- 2007-10-10 22:07:54
9.Aaron
- 你好!
最近我也在做这方面的课题,谢谢你能共享自己的毕业设计,不过有些问题我不太明白,希望能加你QQ,有时间时向你请教下,我的QQ是154396673.谢谢了!
- 2007-10-11 10:43:57
10.olivercamel
引自 Aaron 你好! 最近我也在做这方面的课题,谢谢你能共享自己的毕业设计,不过有些问题我不太明白,希望能加你QQ,有时间时向你请教下,我的QQ是154396673.谢谢了!
加你QQ了,不过不知道能不能帮上忙。我平时也不一定在线。有问题的话建议发邮件给我。
- 2007-10-11 16:27:52
11.dengqing
- 你好,麻烦你能否也发给我一个RS4.0.1的IP核到我的邮箱,谢谢
- 2007-10-16 16:47:20
12.olivercamel
引自 dengqing 你好,麻烦你能否也发给我一个RS4.0.1的IP核到我的邮箱,谢谢
抱歉,我手里也没有这个IP。之前给前一个人回邮件也是这么说的。 我现在的工程里面用的是7.1版的RS的IP,我觉得没有什么问题。不需要用旧核了,不像FFT那么多bug。不知道你到底问题出在什么地方,我觉得好好检查一下,一般来说RS都不应该出错的。 如果还搞不定的话发邮件给我。
- 2007-10-16 22:01:15
13.renzhe.03
- 看了你的设计,你真了不起,自己也是做FPGA实现OFDM,可是一点头绪也没有,你的东西给我了很多启发,想跑一下程序,还缺RS的IP核,我曾上网申请过,可是没申请明白,所以想麻烦你发给我,这可能会耽误你一些时间,我不知道能帮你做些什么,不过我想你能帮我这个忙,谢谢了
我的邮箱:renzhe.03@163.com
- 2007-11-16 21:43:16
14.renzhe.03
- 不用麻烦你发rs的ip了,今天新下了全套的quartus以及ip包,整个程序都跑通了,突然觉得自己读了两年的研究生基本上没学什么。关于你的设计中有些问题想请教:
第一个是关于fftscale模块,关于它的功能能不能介绍得再详细点儿,看原理图它好像是个连接发送端和接受端的一个通路,论文中说是调整指数,将数据乘以8,我想问为什么要这么处理呢? 第二个是关于星座映射,选取的映射输出实部虚部分别为96,32,-33,-97,我想问的是选这四个数据的原因,使随意选取的,还是按照ieee的有关规定确定的。 第三个是,之前我曾弄了一个FFT处理器,Xilinx的ise下跑通了,放到Quartus里有一个程序包就跑不通,那个程序包只有程序包头,作用就是将代码中用到的所有信号初始化,在quartus下编译的时候报错说没有实体。这是因为package引导的程序包本来就没有entity实体。ise在新建文档时就让你选择是vhdl文档还是,vhdl package文档,所以把这个程序包放在vhdl package下自然能跑通,而quartus在新建文档时只有vhdl文档,没有建立程序包的文档,所以把程序包放在里面肯定会因为没有实体编译通不过,你知道这个问题怎么解决么? 好像有点儿问多了,还是希望高人指点指点。 多谢了
- 2007-11-17 15:14:02
15.olivercamel
- 第一个:FFT的过程其实就是输入的数字在不断的做加和乘,由于系统中FFT输出的数据宽度一般都是有限的,所以为了避免数据加乘到一定程度后溢出,可以在数学上把小数点左移,来表示更大范围的数。比如4位数宽度只能表示到9999,如果想要表示10000的话则可以再加一个指数,将10000表示为1000*10。ALTERA的FFT就是这样,它会输出一个有效数据,然后再输出一个指数。两都相乘才是实际的数据。由于在发射端的IFFT和接收端的FFT都是这样产生指数。所以为了不造成错误,需要有一个scale的模块,根据IFFT和FFT的生成的指数位,把结果还原到原来的精度。
第二,那4个数是我随便选的,因为我用8位数表示星座,所以就在-128~128之间平均选了4个等分点。关于星座的数值其实OFDM的标准上应该会有规定,所以你的设计可以参照你的标准来决定。
第三,我对Xilinx的ISE不是很熟,也没用过你所说的package,所以不清楚到底应该怎么解决。Quartus的VHDL文件应该都需要有个实体,而且实体名应该和文件名一致。你可以试试下把你的初始化部分加到你其它设计文件中的顶层实体文件里面去,或者在原来的基础上加一个空的无用实体。
- 2007-11-17 17:54:20
16.renzhe.03
- 没想到这么快就回复我的留言了,真是非常感谢,还有个小问题向你请教下,就是设计当中加零的模块,因为36个数据,FFT是64点,所以加零补齐,我想问的是,为什么不直接输入64个数据,对应64点FFT,这样不是连加零模块可以省掉了,而且还比原来36个数据效率更高。
- 2007-11-19 13:17:08
17.olivercamel
引自 renzhe.03 没想到这么快就回复我的留言了,真是非常感谢,还有个小问题向你请教下,就是设计当中加零的模块,因为36个数据,FFT是64点,所以加零补齐,我想问的是,为什么不直接输入64个数据,对应64点FFT,这样不是连加零模块可以省掉了,而且还比原来36个数据效率更高。
你说的没错,64点FFT中有用的信息数据越多,理论上效率就越高。
但是在实际应用中,64个数据不会都是信息位,其中还要包括控制信号,还有一些规定要留空的位置,做为保留位。另外一般在这个时候还会专门用一些位来插入一个特殊的序列信号,并通过在接收端还原这个信号还做同步和信道状况的估计。
OFDM的标准中一般都规定了如何分配这些FFT的输入位。但是应该都不会有64个位置全部用于信息传递的。所以在FFT之前一定会有一个模块来组合这个64个输入的数据,比单纯的补零要复杂多了。我毕设中的stuff模块就是一个最最简单的示意。
- 2007-11-19 19:52:57
18.小火鸡
- 学长您好,我最近也在做语音的FFT,用到这个7.1的IP核,几近崩溃,请问学长有用这个7.1跑通过吗?
为什么我的sink_ready这个output信号总是在数据开始流输入几个点以后自动跳回无效3~4个周期,然后又跳回有效呢?
- 2007-11-27 22:47:38
19.olivercamel
引自 小火鸡 学长您好,我最近也在做语音的FFT,用到这个7.1的IP核,几近崩溃,请问学长有用这个7.1跑通过吗? 为什么我的sink_ready这个output信号总是在数据开始流输入几个点以后自动跳回无效3~4个周期,然后又跳回有效呢?
我用7.1的FFT Megacore也很崩溃。我觉得很多属性跟之前的版本都不一样了。如果是数据流的话还好,如果是按包输入的话就会有很多莫明其妙的错误。而且总是需要输入3个包以后,才能把第一个的输入“顶”出来。你看看这个版的错误手册,就知道它有多少bug了,而我觉得还不只这些。所以我建议你还是换回以前版的FFT吧,别在这上面浪费太多时间了。没有意义。
- 2007-11-28 17:32:59
20.bikefish
- 能给我一份完整的Altera MegaCore安装包吗?或是告我下载地址.谢谢.
- 2007-11-29 18:10:29
21.olivercamel
引自 bikefish 能给我一份完整的Altera MegaCore安装包吗?或是告我下载地址.谢谢.
Altera.com -> support -> Download Center -> Quartus II Web Edition 里面的第二项就是。
如果还找不到就直接用下面的链接。 https://www.altera.com/support/software/download/altera_design/quartus_we/dnl-quartus_we.jsp
从7.0版以后,ALTERA把自己的所有IP都打成了一个包,不能再独立下载了。如果要用的话,建议你一次性把Quartus, IP Library, NIOS IDE全下了然后依次安装。对了,还有要申请一个free的网络版license,图标也在那一页上。
- 2007-11-30 0:24:33
23.irishcoffee
- 你好!
我来自马来西亚。 我下载你的工程来参考。 看了你的工程,真的作得很好。 我把那个vwf文件打开,用simulator仿真,可是却有syntax error. 如下: Error: Syntax error encountered in vector source file C:/Documents and Settings/user/Desktop/FYP simulink sample/ofdm_sch-1/ofdm_sch_restored/ofdm_sch.vwf, line 27, found text "DATA_OFFSET"
VERSION = 1; TIME_UNIT = ns; DATA_OFFSET = 0;(这一行有问题?) DATA_DURATION = 200000.0; SIMULATION_TIME = 200000.0; GRID_PHASE = 0.0; GRID_PERIOD = 100.0; GRID_DUTY_CYCLE = 50; 想请问那是什么问题?
- 2007-12-20 14:39:53
24.olivercamel
引自 irishcoffee 你好! 我来自马来西亚。 我下载你的工程来参考。 看了你的工程,真的作得很好。 我把那个vwf文件打开,用simulator仿真,可是却有syntax error. 如下: Error: Syntax error encountered in vector source file C:/Documents and Settings/user/Desktop/FYP simulink sample/ofdm_sch-1/ofdm_sch_restored/ofdm_sch.vwf, line 27, found text "DATA_OFFSET" VERSION = 1; TIME_UNIT = ns; DATA_OFFSET = 0;(这一行有问题?) DATA_DURATION = 200000.0; SIMULATION_TIME = 200000.0; GRID_PHASE = 0.0; GRID_PERIOD = 100.0; GRID_DUTY_CYCLE = 50; 想请问那是什么问题?
你好! 之前也有人遇到过这样的问题。大概原因应该是我的project是用7.1版的Quarus做的。在仿真文件中可能使用了一些新的特性是原来早期版本不支持的。你可以换成7.x版的Quartus,或者照着波形图自己重新画一个。
- 2007-12-20 21:30:55
25.renzhe.03
- 你好,想问些关于你写的块交织代码中的问题
块交织代码中好多使能信号还有atlantic接口信号都特意设计了延迟进程,为什么设计这样的延迟。比如: process(clk,readEnable) begin if falling_edge(clk) then readEnable_d0 <= readEnable; readEnable_d1 <= readEnable_d0; end if; end process;
process(clk,interval_source_sop) begin if rising_edge(clk) then interval_source_sop_d0 <= interval_source_sop; interval_source_sop_d1 <= interval_source_sop_d0; end if; end process;
- 2008-1-11 12:23:42
26.renzhe.03
- 还有一个问题:
process(rdAddNum) begin case rdAddNum is when 36 => interval_source_eop <= '1'; interval_source_sop <= '0'; interval_source_eop_a <= '0'; when 1 => interval_source_sop <= '1'; interval_source_eop <= '0'; interval_source_eop_a <= '0'; ------------------------------------------------------------ -- when 30 => -- -- interval_source_sop <= '0'; -- -- interval_source_eop <= '0'; -- -- interval_source_eop_a <= '1'; -- ------------------------------------------------------------ when others => interval_source_sop <= '0'; interval_source_eop <= '0'; interval_source_eop_a <= '0'; end case; end process; 用虚线框起来的部分,为什么设立这个情况,when 1和when 36两种情况就够了吧,为什么设立when 30呢?
- 2008-1-11 12:24:25
27.renzhe.03
- 问得稍微多了一些,给你带来的麻烦表示歉意,同时祝你08年有更好的发展。
- 2008-1-11 12:28:53
28.olivercamel
引自 renzhe.03 问得稍微多了一些,给你带来的麻烦表示歉意,同时祝你08年有更好的发展。
先谢谢你的祝福。问的问题一点也不多,我也很乐意解答。
首先是那许多延迟信号。我写这个VHDL交织模块的时候,还没有太多VHDL的实际经验,所以为了保证逻辑的正确和信号采样的稳定才加了许多延迟,而且还用到了时钟的下降沿。现在看起来很多操作都很笨。而且是可以被省略的。所以也正如我之前强调过的,不用逐行的看我写的代码,因为写的不够规范简炼,不值得浪费太多时间在这上面。看看我报告中的这个模块的大概功能就行了,然后可以根据需要写你自己的。
那个“30”的状态是为了输出一个专门的interval_source_eop_a信号。这个信号设置了另外一个inoutFlag标志,而这个标志被设置就表示开始向外读数据的进程。我这么设计的意思是:根据交织模块的功能,不需要等到36个word全部写进来再开始读,等到有了30个的时候就可以开始启动读的进程且不会有逻辑错误。这样提高了效率。
- 2008-1-12 23:32:15
29.renzhe.03
- 又来问问题了,首先感谢你每次都能耐心地为我解答问题。
第一个还是关于交织模块代码中的问题,在写地址的进程中: -- write address process(clk,aclr,writeEnable,sink_sop,sink_eop) begin if aclr = '1' then wrAddNum <= 1; else if falling_edge(clk) then -- using falling edge if writeEnable = '1' then if wrAddNum = 36 then wrAddNum <= 1; else wrAddNum <= wrAddNum + 1; end if; end if; if sink_sop = '1' then ----问题在这里 wrAddNum <= 2; ---- elsif sink_eop = '1' then wrAddNum <= 1; end if; end if; end if; end process; 当sink_sop置位,也就是开始输入数据的时候,为什么写地址wrAddNum <= 2?写地址是从1~36,为什么当开始输入数据的时候却从2开始?
- 2008-1-15 16:12:52
30.renzhe.03
- 第二个问题是关于CP循环前缀的问题,添加循环前缀的模块中只有RAM,没有FIFO,而删除循环前缀的模块中却是既有RAM,又有FIFO,我想问为什么添加循环前缀的模块中没有FIFO,而删除模块中却有,这里FIFO的作用是什么?
- 2008-1-15 16:18:12
31.olivercamel
引自 renzhe.03 又来问问题了,首先感谢你每次都能耐心地为我解答问题。 第一个还是关于交织模块代码中的问题,在写地址的进程中: -- write address process(clk,aclr,writeEnable,sink_sop,sink_eop) begin if aclr = '1' then wrAddNum <= 1; else if falling_edge(clk) then -- using falling edge if writeEnable = '1' then if wrAddNum = 36 then wrAddNum <= 1; else wrAddNum <= wrAddNum + 1; end if; end if; if sink_sop = '1' then ----问题在这里 wrAddNum <= 2; ---- elsif sink_eop = '1' then wrAddNum <= 1; end if; end if; end if; end process; 当sink_sop置位,也就是开始输入数据的时候,为什么写地址wrAddNum <= 2?写地址是从1~36,为什么当开始输入数据的时候却从2开始?
这个问题不好意思,想了半天实在想不起来了。真不知道当时为什么要搞这么复杂。你可以尝试自己修改一下再仿真。
引自 renzhe.03 第二个问题是关于CP循环前缀的问题,添加循环前缀的模块中只有RAM,没有FIFO,而删除循环前缀的模块中却是既有RAM,又有FIFO,我想问为什么添加循环前缀的模块中没有FIFO,而删除模块中却有,这里FIFO的作用是什么?
这个问题是因为:无论加CP还是去CP都不需要FIFO,加了一个FIFO只不过是因为解CP模块是接收端的第一个模块。这个FIFO是用来缓冲数据的。因为有可能一下子会收到许多数据来不及解。用一个FIFO做缓存。当然FIFO的大小可以根据实际需要再改。
- 2008-1-16 3:25:06
32.renzhe.03
- 你好 又来问问题了
是关于fftscale模块的问题,《fft+ifft block floating point scaling.pdf》文档已经看过了。你设计的fftscale模块代码中,直接将数据左移3位,而并不是将ifft核的指数输出端exponent_out[5..0]接到fftscale模块,再根据其指数数据进行调整。所以我想问这么做的根据是什么?说得具体点就是,scale模块直接将数据移3位的根据是什么?为什么不用exponent_out端口的数据?
- 2008-1-21 19:22:52
33.olivercamel
引自 renzhe.03 你好 又来问问题了 是关于fftscale模块的问题,《fft+ifft block floating point scaling.pdf》文档已经看过了。你设计的fftscale模块代码中,直接将数据左移3位,而并不是将ifft核的指数输出端exponent_out[5..0]接到fftscale模块,再根据其指数数据进行调整。所以我想问这么做的根据是什么?说得具体点就是,scale模块直接将数据移3位的根据是什么?为什么不用exponent_out端口的数据?
这个是因为,我毕设中的输入数据都是自己编的,其实就是从1到10的整数。如果这样的话,只要输入在一定范围内,FFT的exp输入都是固定的。具体到我的毕设中,就是IFFT和FFT的exp都是固定的数,所以在fftscale中直接移位就行了。但是在实际应用中必然是要根据exp来改变移位的多少的。
- 2008-1-22 7:05:13
34.doche
- 博主能力相当强 而且能共享自己的成果 敬意。。。
请问 有OFDM 相关verilog 的工程文件吗 或参考资料吗 我对VHDL不熟悉。。
- 2008-1-24 17:23:07
35.fancyou
- 首先感谢博主,偶然看到您的毕设,受到的启发很大。
想请教一个问题:创建RS编解码器核过程中,Parameterize项目参数设置的含义我不懂。我也看了ug,里面也没有说明如何具体设置,而它讲的伽罗华域的问题更不明白。请问这些设置的根据是什么呢?花了您的时间,深表谢意!
- 2008-3-5 21:22:25
36.olivercamel
引自 doche 博主能力相当强 而且能共享自己的成果 敬意。。。 请问 有OFDM 相关verilog 的工程文件吗 或参考资料吗 我对VHDL不熟悉。。
记得很久以前给你回过邮件了,不知道收到没有。我也没有OFDM的HDL原代码,因为这东西现在应该还没有完全开源的。
- 2008-3-8 4:24:27
37.olivercamel
引自 fancyou 首先感谢博主,偶然看到您的毕设,受到的启发很大。 想请教一个问题:创建RS编解码器核过程中,Parameterize项目参数设置的含义我不懂。我也看了ug,里面也没有说明如何具体设置,而它讲的伽罗华域的问题更不明白。请问这些设置的根据是什么呢?花了您的时间,深表谢意!
说实话我也不怎么懂RS的原理,因为它背后涉及了很深的数学和信息理论的知识,做论文的时候我只知道RS这个IP的时序是怎样的。在这里我只能简单说说我知道的,更多的知识你还是上网搜或者找书看吧。可以找找信息论循环码方面的,因为RS也是循环码的一种。
我假设你除了第二页最下面的3个参数外剩下的都懂。因为那些参数手册上都说得很明白了。
首先说Galois field,就是说在这个域上的数进行运算的结果还在这个域上。比如二进制的0和1,进行乘、加运算后都还在这个域上,即结果还是0或1,不会变出2、3来(因为二进制只能用0和1表示...)。
不过为了编码,我们需要用一个多项式对单个的0和1进行扩展,得到更多的codeword用于编码。这个多项式就是primitive polynomial。它是不可约的,即一个f(x)不能被表示成f(x)=g(x)h(x)的形式。如果指定x的最高次数的话,那么primitive polynomial的个数是有限的,比如说如果x^3为最高次的话,那只有x^3+x^2+1和x^3+x+1是不可约的。注意在二进制中,许多看起来不可约的多项式其实是可约的,比如x^2+1就是,因为(x+1)(x+1)=x^2+2x+1=x^2+1(因为要做模2运算)。
把2代入到primitive polynomial中就得到了field polynomial的值,或者说指定了field polynomial的值就指定了primitive polynomial。还是在上面的最高次x^3例子中,比如field polynomial=13,那就只能用第一个多项式,如果是11,就只能用第2个。
- 2008-3-8 5:02:47
38.olivercamel
- 有了primitive polynomial,就可以得到全部的codeword,进而选出一些用于编码。假设用于编码的数的集合是c(x),在encoding的时候我们原始的数据是d(x),那么就还需要一个generator polynomial g(x),使得d(x)g(x)=c(x)。在信道上传输的实际上是c(x)。在接收端,用c(x)/g(x)就得到了原始数据d(x)。但是如果除不尽,就说明传输中出了错,可以用余数来推导出到底是哪位错了,进而纠错。
确定了first root和root spacing就可以推出g(x),具体的算法就是手册上的公式(其实我也不会算)。
总的来说,RS编码中需要有primitive和generator polynomial,它们决定了编码后的数值长什么样子。同样的一串100110,被不同的多项式编码后可能会出来不一样的值。
在RS应用中,我觉得这两个多项式并不那么重要(相比于R的值),因为毕竟是编码而不是加密。还是纠错能力更重要。建议你先找相关的标准手册,虽然我没看过,但是我觉得无论是DSL还是WiMAX什么的只要用RS的都应该会在标准中指定这些值。如果你是自己做东西,没有什么依据的话,那就把R选好,其它的都用默认最小值就行了。如果有人过来跟你说你这么样不行的话(比如你老板),那就让他决定用什么值就好了。 :-)
- 2008-3-8 5:03:20
39.关于IFFT问题
- 请问下 IFFT变换中不是要除以N吗 在程序里好象没找到,是什么原因呢 是否结合到移位中了。
- 2008-3-30 20:29:47
40.olivercamel
引自 关于IFFT问题 请问下 IFFT变换中不是要除以N吗 在程序里好象没找到,是什么原因呢 是否结合到移位中了。
ALTERA的FFT核本身没有除N的功能,所以需要自己来做。具体就是等IFFT+FFT变换回来以后,再多用一个scale的模块把运算结果的小数点通过缩放还原到正确的位置上。在二进制中乘2和除2都可以通过左移1位或者右移1位来实现,所以缩放的实际工作就是决定把FFT的结果移多少位。这个应该是由exp的输出来决定的。
在我的毕设的工程中,因为输入的数字都很小,所以exp的输出总是固定的。因此我就根据经验做了简化,假定exp的值总是常数,直接就在FFTscale模块中做了移位。
- 2008-3-30 21:03:29
41.shouyi
- 斑竹真是太强悍了,能把设计写的这么通俗易懂,连我这个外行都看的稍微明白。相当的佩服,本来不想说些奉维的话,可情不自禁啊。
我毕业设计是写SIMULINK的OFDM仿真的,看了你文章的第一章和第二章,收获很大,不懂斑竹有没有写调制方式选择这方面的MDL文件,可以共享一下,或发到我油箱吗?万分感激。。。期待中。。。。
- 2008-4-1 22:48:26
42.renzhe03
- 能不能劳驾发给我一个reed solomon 4.0.1 IP核,实在找不到。 多谢了
- 2008-4-1 22:56:58
43.olivercamel
引自 shouyi 斑竹真是太强悍了,能把设计写的这么通俗易懂,连我这个外行都看的稍微明白。相当的佩服,本来不想说些奉维的话,可情不自禁啊。 我毕业设计是写SIMULINK的OFDM仿真的,看了你文章的第一章和第二章,收获很大,不懂斑竹有没有写调制方式选择这方面的MDL文件,可以共享一下,或发到我油箱吗?万分感激。。。期待中。。。。
不好意思,没有。当时我做的就只是知道在MATLAB中有这么个模型而已。呵呵,白夸了我半天。
- 2008-4-6 1:12:18
44.olivercamel
引自 renzhe03 能不能劳驾发给我一个reed solomon 4.0.1 IP核,实在找不到。 多谢了
我这边也没有4.0.1的RS核了。不过现在最新7.x版本的好像也一样能用,没有问题的。
- 2008-4-6 1:13:56
45.shouyi164
- 呵呵,没关系了。多花点时间,应该会有所突破的,当然希望有OFDM系统SIMULINK仿真或者对调制技术强手的朋友能够教小弟几招,借斑竹的地盘发发帖》》联系方式:Q:364748779。EMAIL:shouyi164@163.com.谢谢。。。
- 2008-4-6 9:40:49
46.关于fft出现的一些问题
- 你好,看了你的文章真是令我佩服!我现在正在用fft ipcore实现fft,其中出现了一些问题,实在是想不通,提出来一起探讨一下。
为了测试fft的正确性,我写了如下代码: k=1:1024; x=cos(0.48*pi*k); N=1024; INVERSE=0; y0=fft(x,1024); [y1, exp_out1] = example1_model(x,N,INVERSE); figure; plot(k,abs(y0)); figure; plot(k,abs(y1)); 在matlab中仿真比较一下,其中y0是在matlab中直接调用fft函数实现1024点的fft变换,y1是利用fft ipcore生成的1024点函数,在matlab下测试,最后得出的图形差别很大,并且y1是错误的,我没分析出是什么原因,麻烦博主帮忙,谢谢!
- 2008-4-7 15:30:00
47.renzhe.03
- 看楼主的论文中提到设计已经通过硬件调试了,我前几天碰巧找到一块FPGA的开发板,飓风EP1C12,资源应该够用了,想放到片子上跑跑,体验体验。恳请楼主能不能具体说说在加载到片上的时候注意的问题,尤其是输入信号,像sink_val,sink_sop,sink_eop怎么给?因为在时钟频率很高的情况下,按照仿真波形文件中那样设计输入,如果用板子上的开关实现的话,好像很困难。
- 2008-4-8 12:40:50
48.olivercamel
引自 renzhe.03 看楼主的论文中提到设计已经通过硬件调试了,我前几天碰巧找到一块FPGA的开发板,飓风EP1C12,资源应该够用了,想放到片子上跑跑,体验体验。恳请楼主能不能具体说说在加载到片上的时候注意的问题,尤其是输入信号,像sink_val,sink_sop,sink_eop怎么给?因为在时钟频率很高的情况下,按照仿真波形文件中那样设计输入,如果用板子上的开关实现的话,好像很困难。
如果是做到板子上的话,需要在额外设计是一个输入模块和一个输出模块,来为OFDM系统提供输入和保存输出。最理想办法是设计一个包含MegaWizard/Memory Compiler/RAM:1-port,或者其它RAM核的输入模块,并在里面预先存好随机数据,再设计一些逻辑按周期把它读出来并打包发给OFDM系统。然后相应再写一个输出RAM保存结果。最后可以用In-system memory content editor之类的工具来检查输出结果和输入是否相同即可。听起来挺麻烦的,其实不没有那么难。
当然还有更偷懒的办法,就是用4个输入开关决定输入的二进制数,然后把这个输入直接接到OFDM的输入(反正OFDM不工作的时候数据也可以输入)。再写用一个计数器,按周期输出sop,eop和val。比如以1000为周期,数到1的时候输出一个sop,到6的时候输出eop,中间一直输出val,然后之间的900多3个信号都置0。这样就组合出了一个内部数据完全一样的包。然后发给系统。而且空间的空闲时间也足够计算完成了。最后再把输出接到4个LED上,观查灯的结果是不是与开关一样即可。(我当时就是这么干的)
- 2008-4-10 4:04:04
49.renzhe.03
- 楼主的第二种方法果然经典,正是我想要的那种,只是最近一段时间很少碰代码,现在写起来有些生疏了,想必楼主也应该有这样的经历,隔断时间不用这东西,就会忘得很厉害。如果楼主曾经调试用的那几个计数器如果还保留着,能不能劳驾发给我参考下。 renzhe.03@163.com 我将万分感谢。其实已经万分感谢楼主曾经耐心为我解答问题了。
- 2008-4-11 22:24:54
50.olivercamel
引自 renzhe.03 楼主的第二种方法果然经典,正是我想要的那种,只是最近一段时间很少碰代码,现在写起来有些生疏了,想必楼主也应该有这样的经历,隔断时间不用这东西,就会忘得很厉害。如果楼主曾经调试用的那几个计数器如果还保留着,能不能劳驾发给我参考下。 renzhe.03@163.com 我将万分感谢。其实已经万分感谢楼主曾经耐心为我解答问题了。
呵呵,我手头也没有了。你还是自己试着写写吧,其实这种程度的逻辑没有什么难度的。
- 2008-4-13 2:26:52
51.olivercamel
引自 关于fft出现的一些问题 你好,看了你的文章真是令我佩服!我现在正在用fft ipcore实现fft,其中出现了一些问题,实在是想不通,提出来一起探讨一下。 为了测试fft的正确性,我写了如下代码: k=1:1024; x=cos(0.48*pi*k); N=1024; INVERSE=0; y0=fft(x,1024); [y1, exp_out1] = example1_model(x,N,INVERSE); figure; plot(k,abs(y0)); figure; plot(k,abs(y1)); 在matlab中仿真比较一下,其中y0是在matlab中直接调用fft函数实现1024点的fft变换,y1是利用fft ipcore生成的1024点函数,在matlab下测试,最后得出的图形差别很大,并且y1是错误的,我没分析出是什么原因,麻烦博主帮忙,谢谢!
几天前给你的邮箱回邮件了。不知收到了没有。
- 2008-4-13 2:27:45
52.renzhe.03
- 那个计数器自己写了,设计的波形跟系统的仿真输入波形一样,不过让我郁闷的是,通过计数器设计出的sop,eop,val因为是计数器的输出,所以跟时钟沿有延时,结果在最后整个系统的仿真结果中,除了第一个数据正确之外,后面的数据采样全都不对,不知道当初楼主设计的时候碰没碰到过这样的问题。
- 2008-4-13 9:46:49
53.ioupty
- 学长你好:
偶然的机会看到了你的毕业设计论文,真让人震撼啊!我现在大四,要做《一种基于循环前缀的OFDM同步算法》,一点头绪都没有,你的毕业设计给我点亮了前方,非常感谢! 真心希望能加你为好友,同样希望能够得到学长的指导,我 QQ272265830 。 期待!
- 2008-4-13 17:27:03
54.fancyou
- 非常感谢博主耐心细致的解答!
又来问问题了: 请问exponent_out输出以后究竟该怎么处理以修正数据呢? 你说的《fft+ifft block floating point scaling.pdf》文档我在网上找了好久都没下到,能否给我一份呢?谢谢了! 我的邮箱是redburn@163.com
- 2008-4-14 22:02:58
55.olivercamel
引自 renzhe.03 那个计数器自己写了,设计的波形跟系统的仿真输入波形一样,不过让我郁闷的是,通过计数器设计出的sop,eop,val因为是计数器的输出,所以跟时钟沿有延时,结果在最后整个系统的仿真结果中,除了第一个数据正确之外,后面的数据采样全都不对,不知道当初楼主设计的时候碰没碰到过这样的问题。
没有印象了...不过这样吧,麻烦你把你的HDL文件和波形图打个包到我邮箱,我看看你写的代码再说。
- 2008-4-15 4:30:07
56.olivercamel
引自 ioupty 学长你好: 偶然的机会看到了你的毕业设计论文,真让人震撼啊!我现在大四,要做《一种基于循环前缀的OFDM同步算法》,一点头绪都没有,你的毕业设计给我点亮了前方,非常感谢! 真心希望能加你为好友,同样希望能够得到学长的指导,我 QQ272265830 。 期待!
谢谢你,不过我现在确实不怎么上QQ了,很少在线。建议有事情写邮件给我,回复得绝对比在QQ上留言回复得快。
- 2008-4-15 4:32:26
57.olivercamel
引自 fancyou 非常感谢博主耐心细致的解答! 又来问问题了: 请问exponent_out输出以后究竟该怎么处理以修正数据呢? 你说的《fft+ifft block floating point scaling.pdf》文档我在网上找了好久都没下到,能否给我一份呢?谢谢了! 我的邮箱是redburn@163.com
这个是ATLERA公司的技术文档,application note (AN) 404。这个是链接:http://www.altera.com.cn/literature/an/an404.pdf 还有这个我今天刚刚看到,可能也有帮助,给你参考: http://www.altera.com.cn/support/examples/verilog/ver-cascaded-fft-ifft.html
- 2008-4-15 4:37:20
58.renzhe.03
- 计数器作激励的模块我又重新写了。不过又出现了一个有意思的事儿,就是在设计输入数据input的时候,无论给几,仿真后的输出波形的输入显示的总是1。另外还有个事情请教楼主,就是ip核在芯片上使用的时候,还需要另外的licence么?当下载到芯片的时候,总弹出一个对话框,提示说如果选择cancel的话,opencore就失效。是不是如果不点击cancel就没事儿,这个现象正常么?
- 2008-4-16 10:08:57
59.olivercamel
引自 renzhe.03 计数器作激励的模块我又重新写了。不过又出现了一个有意思的事儿,就是在设计输入数据input的时候,无论给几,仿真后的输出波形的输入显示的总是1。另外还有个事情请教楼主,就是ip核在芯片上使用的时候,还需要另外的licence么?当下载到芯片的时候,总弹出一个对话框,提示说如果选择cancel的话,opencore就失效。是不是如果不点击cancel就没事儿,这个现象正常么?
模块的那个我给你回了一封信,你试试把sop和eop的间隔改到1看看。另外关于altera的opencore plus特性,我一直也没看留意,不知道他们altera又改了没有。反正你下到FPGA上能用就行,但是是有期限的,不能无限期用。我搜了一个文档,你对照看看有没有帮助http://www.altera.com.cn/literature/an/an320.pdf
- 2008-4-17 7:27:52
60.shouyi164
- 学长,我又来了,请查收一下我发给的邮件,好吗?谢谢。。。非常。。。
- 2008-5-4 21:47:26
61.doche
- FFT变换时为什么是96,32,-33,-97而不是正负96与正负32?
- 2008-5-6 21:53:19
62.olivercamel
引自 doche FFT变换时为什么是96,32,-33,-97而不是正负96与正负32?
第一个原因是8位有符号数的范围是127到-128,所以如果把0和正数算到一起的话,那么-33和-97才正好是32个数的等分点。
第二个原因更重要一点,是因为96的二进制为01100000,-96的二进制为10100000,而-97的二进制为10011111。相比-96,-97的二进制与96的二进制差异更大,区分度也就更大一些。不至于只错2bit就从一个点到另一个点。
不过我这几个数也还是随便选的。具体如果选择合适的星座点还得具体分析。
- 2008-5-7 5:52:51
63.doche
引自 olivercamel 引自 renzhe.03你好 又来问问题了 是关于fftscale模块的问题,《fft+ifft block floating point scaling.pdf》文档已经看过了。你设计的fftscale模块代码中,直接将数据左移3位,而并不是将ifft核的指数输出端exponent_out[5..0]接到fftscale模块,再根据其指数数据进行调整。所以我想问这么做的根据是什么?说得具体点就是,scale模块直接将数据移3位的根据是什么?为什么不用exponent_out端口的数据? 这个是因为,我毕设中的输入数据都是自己编的,其实就是从1到10的整数。如果这样的话,只要输入在一定范围内,FFT的exp输入都是固定的。具体到我的毕设中,就是IFFT和FFT的exp都是固定的数,所以在fftscale中直接移位就行了。但是在实际应用中必然是要根据exp来改变移位的多少的。 引自 olivercamel 引自 renzhe.03你好 又来问问题了 是关于fftscale模块的问题,《fft+ifft block floating point scaling.pdf》文档已经看过了。你设计的fftscale模块代码中,直接将数据左移3位,而并不是将ifft核的指数输出端exponent_out[5..0]接到fftscale模块,再根据其指数数据进行调整。所以我想问这么做的根据是什么?说得具体点就是,scale模块直接将数据移3位的根据是什么?为什么不用exponent_out端口的数据? 这个是因为,我毕设中的输入数据都是自己编的,其实就是从1到10的整数。如果这样的话,只要输入在一定范围内,FFT的exp输入都是固定的。具体到我的毕设中,就是IFFT和FFT的exp都是固定的数,所以在fftscale中直接移位就行了。但是在实际应用中必然是要根据exp来改变移位的多少的。
输入数据如何保证是1至10的整数?输入数据不是经过16QAM映射后的数据吗?而且都表示为10bit的形式,不使用exp如何能保证不溢出?
- 2008-5-7 15:52:53
64.olivercamel
引自 doche 输入数据如何保证是1至10的整数?输入数据不是经过16QAM映射后的数据吗?而且都表示为10bit的形式,不使用exp如何能保证不溢出?
输入数据为1到10的整数是指的整个系统的输入,不是FFT模块的输入。
FFT和IFFT之间并不是不使用exp,而是假定exp是一个固定的值(比如设exp=8),然后直接用这个数做运算。如果不用exp的话是一定要溢出的。
- 2008-5-8 3:26:17
65.人间五月天
- 高人!
我现在在做基于FPGA的FFT处理器的研究 这个毕业设计题目 已经被教授骂了N回了 看见你做的东西,发现跟你的差距太大了! 向你学习!
- 2008-5-8 19:01:09
66.wwwof
- 你好,你的代码在maxplus2上能编译仿真吗?
我用它编译时总是出现"can't open VHDL "cyclone"" 望学长赐教
- 2008-5-12 12:09:29
67.olivercamel
引自 wwwof 你好,你的代码在maxplus2上能编译仿真吗? 我用它编译时总是出现"can't open VHDL "cyclone"" 望学长赐教
在maxplus上应该是不行的,我没试过,但是cyclone系列的FPGA和用到的那些IP应该都是maxplus不支持的。建议还是别用maxplus了,已经很旧了,altera都有很久不更新这个软件了。去altera主页直接下载个Quartus的网络版吧。
- 2008-5-13 5:54:12
68.www0f
- 谢谢你及时的答复!
altera主页直接下载的Quartus的网络版能直接用吗?要下破解码吗? Quartus 还没用过 呵…
- 2008-5-13 13:35:24
69.wwwof
- 不好意思,你有Quartus网络版的许可文件吗?能发个给我吗?
邮箱是:wangweiwei_9@126.com 谢谢
- 2008-5-13 21:58:42
70.olivercamel
引自 wwwof 不好意思,你有Quartus网络版的许可文件吗?能发个给我吗? 邮箱是:wangweiwei_9@126.com 谢谢
Quartus网络版及其它工具的许可是免费的,因为网络版软件本身就是免费的。你可以直接去altera主页上申请,虽然麻烦了一点。具体方法如下: 登陆http://www.altera.com/; 点击第一栏products下面的Design Software; 在左侧最下选择Licensing ; 选择Get licenses; 选择Get a license for the Quartus II Web Edition software and the ModelSim-Altera Web Edition software. 接着要输入账号。如果你没有账号的话可以新建一个。在左下写邮箱,然后进去填表。或者你也可以选右侧的只登陆一次那个。不过一样要填表。 登陆进账号之后就正式开始申请了,先输入你的Host ID,也有人叫物理地址。具体是在windows的开始菜单下,选择“运行...”,输入cmd然后回车,在小黑窗口中输入“ipconfig -all”回车,然后出现的一堆内容中的“Physical Address”后面的一串字符就是。把这12位字符记下来,中间的“-”要去掉。
- 2008-5-14 3:17:36
71.olivercamel
引自 wwwof 不好意思,你有Quartus网络版的许可文件吗?能发个给我吗? 邮箱是:wangweiwei_9@126.com 谢谢
选择你是否使用Modelsim,再选择是商用,还是做学术用。 然后要完成一个长长的调查问卷,这是我第一次申请时候最头疼的部分。虽然我建议凭良心认真填写,顺带练练英语,但是如果你胡填一气的话我觉得也可以理解,毕竟太长了。只有第9项我拿不准乱填是否真有效果,所以最好不要胡写,一律选最后的5001+(其实还是胡选)。 然后就完成了,一般来说系统会自己把许可文件,通常叫license.dat寄到你的账号邮件地址,这个过程通常是立即完成的。 再之后从你收到的邮件中把license.dat复制到你的电脑里面,建议放到altera的安装目录,这样更好管理。 再然后打开Quartus,Tools -> License Setup,在第一个License file里面选你刚申请的许可文件。 作为这一切过程成功了的证明,最后在Current License里面会出现你的许可信息。
如果这个过程中还是失败了,那就去www.altera.com.cn吧,呵呵,在那里可以完全用中文完成这个申请的过程。(不过我刚才试的时候到调查问卷那一项网站就卡了)
- 2008-5-14 3:20:21
72.wwwof
- 多谢 多谢
我去试试
- 2008-5-14 10:47:51
73.关于fft出现的一些问题
- 你好,再一次打扰你了,呵呵
我在用FFT megacore function 实现fft时,输入数据按照user guide的要求输入,但输出结果总为0,提示有warning,如 Warning: Write to auto-size memory block "fft_core:inst1|asj_fft_sglstream:asj_fft_sglstream_inst|asj_fft_4dp_ram:\gen_M4K_Output:dat_C|asj_fft_data_ram:\gen_rams:2:dat_A|altsyncram:\gen_M4K:altsyncram_component|altsyncram_6qo2:auto_generated|ram_block1a2" assumed to occur on falling edge of input clock 要用时钟的下降沿,但我采用的的确是下降沿。不知道博主遇到这样的问题没,不胜感激!
- 2008-5-15 11:50:27
74.olivercamel
引自 关于fft出现的一些问题 你好,再一次打扰你了,呵呵 我在用FFT megacore function 实现fft时,输入数据按照user guide的要求输入,但输出结果总为0,提示有warning,如 Warning: Write to auto-size memory block "fft_core:inst1|asj_fft_sglstream:asj_fft_sglstream_inst|asj_fft_4dp_ram:\gen_M4K_Output:dat_C|asj_fft_data_ram:\gen_rams:2:dat_A|altsyncram:\gen_M4K:altsyncram_component|altsyncram_6qo2:auto_generated|ram_block1a2" assumed to occur on falling edge of input clock 要用时钟的下降沿,但我采用的的确是下降沿。不知道博主遇到这样的问题没,不胜感激!
没遇到过这样的问题。你要是不怕麻烦可以把工程打个包寄给我。等我什么时候有空了看下。
- 2008-5-18 1:27:00
75.lingkzc
- 正做毕业设计,看了一下你的程序,很有帮助,谢谢了!
能不能加我qq:358349872,有问题可以问你一下
- 2008-5-18 10:53:48
76.olivercamel
引自 lingkzc 正做毕业设计,看了一下你的程序,很有帮助,谢谢了! 能不能加我qq:358349872,有问题可以问你一下
我平时不怎么用QQ,所以抱歉了。有问题的话可以直接写邮件给我。要是我能帮上忙的一般都会很快给回复。
- 2008-5-18 22:02:20
77.vans
- 请问这个可以用matlab运行吗?
- 2008-5-21 20:31:56
79.yao
- Error: Syntax error encountered in vector source file E:/yao/zcy.vwf, line 27, found text "DATA_OFFSET" 你好请问下这个是什么原因的阿?我用的是6.0版本的~~~能否在不换版本的基础上解决呢?
- 2008-5-23 9:23:09
80.olivercamel
引自 yao Error: Syntax error encountered in vector source file E:/yao/zcy.vwf, line 27, found text "DATA_OFFSET" 你好请问下这个是什么原因的阿?我用的是6.0版本的~~~能否在不换版本的基础上解决呢?
应该是可以的。其实我最初是用Quartus 5.x做的设计。那个Error的原因是使用的仿真波形文件wvf中有Quartus不支持的格式。在7.0中画的波形文件就包含了6.0以前不支持的格式。所以再仿真的时候就会报错。解决办法就是在6.0中重新画一个就好了。
- 2008-5-24 15:49:00
81.wwwof
- Error (10500): VHDL syntax error at ram_Stuff_inst.vhd(1) near text "ram_Stuff_inst"; expecting "entity", or "architecture", or "use", or "library", or "package", or "configuration"
我用的是Quartus7.2版 不知道那里出错,望大侠指教!
- 2008-5-25 13:45:48
82.关于fft出现的一些问题
- 再来请教一下高手,我现在正在做用fft ipcore实现fft,对于这样一个模块,不知道博主开始是怎样测试的?即用fft toolbench 生成之后,可不可以直接从外部加信号仿真一下看波形,我试了一下没成功,还望高手帮忙
- 2008-5-27 11:20:24
83.olivercamel
引自 wwwof Error (10500): VHDL syntax error at ram_Stuff_inst.vhd(1) near text "ram_Stuff_inst"; expecting "entity", or "architecture", or "use", or "library", or "package", or "configuration" 我用的是Quartus7.2版 不知道那里出错,望大侠指教!
我这里没见过这样的错误。syntax error一般应该都是语法错误。建议你仔细检查一下。
- 2008-5-28 6:05:40
84.olivercamel
引自 关于fft出现的一些问题 再来请教一下高手,我现在正在做用fft ipcore实现fft,对于这样一个模块,不知道博主开始是怎样测试的?即用fft toolbench 生成之后,可不可以直接从外部加信号仿真一下看波形,我试了一下没成功,还望高手帮忙
我给你回了一封邮件到163邮箱。
- 2008-5-28 6:26:18
86.yanggongbi
- 你好 我正在做有关于OFDM的毕业设计 你的论文对我很有帮助 我借用了你的外文资料及其翻译 但是字数不够 你只翻译了那篇论文的前3页不到 我想请问一下你有没有那篇论文的全篇翻译 真的很感谢!!
- 2008-5-28 17:04:04
87.addexcell
引自 关于fft出现的一些问题 再来请教一下高手,我现在正在做用fft ipcore实现fft,对于这样一个模块,不知道博主开始是怎样测试的?即用fft toolbench 生成之后,可不可以直接从外部加信号仿真一下看波形,我试了一下没成功,还望高手帮忙 我也有同问,请主人也发一个同样的邮件给我好不好,谢谢啦
- 2008-5-30 9:24:25
88.我想请教一个问题
- 原来设计的时候用的是2.1.0的fft core,quartus5.1的版本,现在想把整个OFDM移植到quartus7.1上,结果发现fft的时序很不一样,于是和lz一样想在7.1上调用2.1.0的fft core,可是在调用的时候老是出错,jar什么出错,想问下,怎么在7.1上调用2.1.1的fft core?需要设置什么东西么?还是和我安装的是7.1而不是7.1sp1有关?谢谢!
- 2008-7-7 16:21:15
89.olivercamel
引自 我想请教一个问题 原来设计的时候用的是2.1.0的fft core,quartus5.1的版本,现在想把整个OFDM移植到quartus7.1上,结果发现fft的时序很不一样,于是和lz一样想在7.1上调用2.1.0的fft core,可是在调用的时候老是出错,jar什么出错,想问下,怎么在7.1上调用2.1.1的fft core?需要设置什么东西么?还是和我安装的是7.1而不是7.1sp1有关?谢谢!
现在8.0版的FFT好像没什么大问题了。我前段时间简单试了一下。所以如果可能你把Quartus和FFT都换到8.0吧。 如果一定要用2.x.x的话,首先你要有一个FFT的早期版本,比如2.1.0。还要有一个在Quartus5.1下面生成过的FFT的工程。因为在7.x版的Quartus下面是没办法用控制台给FFT设置参数并生成相关文件的。 然后这么做:首先先建立一个Quartus5.1的工程;然后把FFT2.x.x文件夹里面的lib目录连同用5.1生成的FFT文件一并拷贝到你新工程目录下;再然后把你刚才的lib目录和5.1FFT目录添加到setting中的库目录下面;最后直接编译5.1FFT文件中的顶层实体就应该能通过了。 你先试试看,还有问题可以直接写信给我。
- 2008-7-7 17:40:26
90.olivercamel
引自 olivercamel 然后这么做:首先先建立一个Quartus5.1的工程;
这里写错了,是7.1
- 2008-7-7 17:42:30
91.继我想请教一个问题
- 燃眉之急,没想到lz回复地那么快!十分感激。
一方面,按照lz的步骤我先去试试;另一方面,正在下载8.0。 如有问题,邮件联系,万分感谢!
- 2008-7-7 21:27:39
|
|
|
|