在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: snowyd

谁会?

[复制链接]
 楼主| 发表于 2004-6-20 13:38:43 | 显示全部楼层

谁会?

谢谢serene,谢谢版主!!!
你们的帮助我铭记于心!
 楼主| 发表于 2004-6-20 21:26:17 | 显示全部楼层

谁会?

在我QUARTUAS编译中这一行(约420) ram_length => 8);出现5、6个语法提示错误!
还有其他的老是提出少“;”的错误,但改了也没有用!!!
过去的一个月里,我很想把程序编完,一直在写,能想到的东西都写了,一直没有
做什么综合和仿真。现在调试工作也是一个难题!!
说实话,我这一个月没有进步,我导师一直都是放任态度,对我不理不睬,
我没能完成毕业设计,心理一直憋着一股火,一股气!!!!!!!!11
心理一直在流泪!!!
心理很不服,四年来所有的目标在3年半的时间基本]都完成,只有毕业设计令我肝肠
存断。如果导师能想你们能给我的实际的帮助,而不是这也简单那也容易!!
我不相信我会笨的像今天。开始到现在我走了很多弯路!!
一开始到现在,其实有些东西是无用的现在看来,但却花掉了时间。拿到题目无从下手,原先理念自上而下,而我现在做的全是自下而上!
脑子里一直都没有一个完整的开发过程,每天应该做什么,怎么做完全盲目,濒临5月底,心已经乱了,我通宵了有快一个月时间,效率低我承认,但不通宵对我来说就是一夜的侧枕难眠。心中是窝着一团火。生活的人没有人能知道我的心,这个世界认识我的人也没有几个人会相信我毕业设计做不出来。但这却已经是事实!!!!!!!
发表于 2004-6-20 21:37:13 | 显示全部楼层

谁会?

我想你以前肯定没有经过相应的培训
在毕设过程中也没人指导,所以,对于你来说能做到这一步已经很不错了
不要太自责,毕设做不好没什么关系
以后上研究生,自己多训练一下就好了。至于现在,就不要理周围的人怎么看你了,自己好好准备答辩吧,其实每个人都很清楚自己的毕设是怎么做出来的
发表于 2004-6-20 21:37:44 | 显示全部楼层

谁会?

另外,自己要注意休息,身体是革命的本钱
 楼主| 发表于 2004-6-20 21:41:12 | 显示全部楼层

谁会?

作为一个想从事这方面研究的我,在接触VHDL近两个月后,仍然没有入门,我研究生阶段也很可能,是处在有导师但却明存实亡的状态。
这辈子能有多大进展,会不会成为读了二十几年书到头来变成废人?
以后三年的路该怎么走,我应该怎么才能进人该领域!!
我没有办法,眼前我只能当没有导师,对于FPGA,发展和应用都在前进着,作为我们学校,可以讲基本没有该方面的氛围。FPGA涉及很多,并不是我现在的仿真就可以的,对于布线,FPGA结构,各种验证方法,手段,心中全无概念。我曾经对你们说过
很想有人代我走一趟这个过程。就拿怎么去写测试平台一样,或许不难,但我没有掌握。当看到别人的毕业设计,论文中夹杂着带有导师红色印迹时,心理嫉妒了,也流泪了。看到别人导师会来问问设计进展时,我羡慕了。在我生活的世界里诚然还有一些自学成才者,但站在门外的我,却看不到胜利。
 楼主| 发表于 2004-6-20 21:47:45 | 显示全部楼层

谁会?

还有做64点时,应该要有控制单元!
状态机怎么样?
我用mealy机!
但说实话我并不很了解状态机和摩尔机,两者有何差别?
还有在蝶形]单元要用几个时钟能完成一次蝶形运算,
四个能做完不?
结构会是什么样的?
发表于 2004-6-20 21:49:18 | 显示全部楼层

谁会?

(约420) ram_length => 8);出现5、6个语法提示错误!
如果这一行是位于ram例化(generic map)的话,“ram_length => 8);”中最后的“;”是不需要的。
我这里用quartus ii v3.0,选cyclone器件,已经能编译通过。只是没有设定约束,全部用LE实现(其实可利用内部ram块),编译报告显示占用2859个LE,71个pin,Fmax=97.29M
发表于 2004-6-20 22:02:57 | 显示全部楼层

谁会?

不要想其他的了
以后常来这里讨论吧
发表于 2004-6-20 22:13:09 | 显示全部楼层

谁会?

是啊,atuhappy版主说得对,先考虑目前需要做的事吧,以后的事等答辩后再想。
实际上很多毕业设计并没有实际完成的,只要论文能看得过去,也能通过的。可能你自己心里过不去,觉得没有完成很难过,那么答辩后你可以继续完成它。你有这样的上进心,将来一定会成功的。
发表于 2004-6-21 14:17:17 | 显示全部楼层

谁会?

--testbench:fft_tb.vhd,我的ise前一阵卸载了,所带的Modelsim也卸了,所以没法验证,凑合着看吧。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
use std.textio.all;
use ieee.std_logic_textio.all;
use ieee.numeric_std.all;
entity fft_tb is
end;
architecture bench of fft_tb is
component fft
       generic(
              coeff_width : integer := 16;
              data_width  : integer := 16;
              fft_length  : integer := 4);
       port   (
              reset       : in  std_logic;                                   -- Power on reset (Active Low)
              clk         : in  std_logic;                                   -- Input clock
              data_rd     : in  std_logic;                                   -- New Sample Read (Active High Sampling Clock)
              data_in_r   : in  std_logic_vector(Data_width-1 downto 0);     -- Input real data
              data_in_i   : in  std_logic_vector(Data_width-1 downto 0);     -- Input imaginary data
              address     : in  std_logic_vector(2 downto 0);                -- Address bus for accessing output results array
              data_out_r  : out std_logic_vector(Data_width-1 downto 0);     -- Output real data
              data_out_i  : out std_logic_vector(Data_width-1 downto 0);     -- Output imaginary data
              res_valid   : out std_logic                                    -- Indicates that results are now valid
              );
end component;
component RMS
       generic(
              data_width       : integer := 16);
       port   (
              reset            : in  std_logic;                               -- power on reset
              clk              : in  std_logic;                               -- Input clock
              load             : in  std_logic;                               -- New Sample Read (Active High Sampling Clock)
              input_data_real  : in  std_logic_vector(data_width-1 downto 0); -- Input Data Real
              input_data_imag  : in  std_logic_vector(data_width-1 downto 0); -- Input Data Imag               
              rms_result       : out std_logic_vector(data_width-1 downto 0)  -- RMS result
  );
end component;
--------------------------------------------------------------------------------
subtype data_value is std_logic_vector(15 downto 0);
type Cartesian_results_array is array (0 to 7) of data_value;
type FFT_Magnitude_Array is array (0 to 3) of data_value;
signal reset_low, clk, sample_clk      : std_logic;                                    -- Testbench signals
signal data_sample_real                : std_logic_vector(15 downto 0);
signal data_sample_imag                : std_logic_vector(15 downto 0);
signal count1                          : integer range 0 to 14;
signal address                         : std_logic_vector(2 downto 0);
signal fft_data_real_result            : std_logic_vector(15 downto 0);
signal fft_data_imag_result            : std_logic_vector(15 downto 0);
signal data_out                        : std_logic_vector(15 downto 0);
signal res_valid                       : std_logic;
signal Cartesian_results               : Cartesian_results_array;
signal results_out_count               : integer range 0 to 4;
signal Magn_Result                     : FFT_Magnitude_Array;
begin
test_fft: fft
   generic map(
               coeff_width => 16,
               data_width  => 16,
               fft_length  => 4
               )
      port map(
              reset      => reset_low,                                       -- Power on reset active low
              clk        => clk,                                             -- Main clock
              data_rd    => sample_clk,                                      -- Data Sampling Clock
              data_in_r  => data_sample_real,                                -- Input Data Real
              data_in_i  => data_sample_imag,                                -- Input Data Imag
              address    => address,                                         -- Input Address
              data_out_r => fft_data_real_result,                            -- FFT Output Real
              data_out_i => fft_data_imag_result,                            -- FFT Output Imag
              res_valid  => res_valid                                        -- Results valid indicator
              );

cartesian_values: process(address)
-- Insert the real and imaginary results into array to calculate
-- their RMS magnitude values
begin
if ((unsigned(address) rem 2) = 0) or (To_Integer(unsigned(address)) = 0) then
   Cartesian_results(To_Integer(unsigned(address))) <= fft_data_real_result;
   Cartesian_results(To_Integer(unsigned(address))+1) <= fft_data_imag_result;
end if;
end process cartesian_values;

-- Instantiate the RMS component here for each real and imaginary value and output the results
Mag_Calc:    for I in 0 to 3 generate
Magn: RMS
-- Calculate the RMS result for each real and imaginary output values
     generic map (16)
     port map (
              reset => reset_low,
              clk => clk,
              load => sample_clk,
              input_data_real => Cartesian_results(2*I)(15 downto 0),
              input_data_imag => Cartesian_results((2*I)+1)(15 downto 0),
              rms_result => Magn_Result(I)
              );
end generate Mag_Calc;

results_address: process(reset_low, clk)
-- Process generates the input address for the completed results
begin
     if reset_low = '0' then
        address <= (others => '0');
     elsif Rising_Edge(clk) then
        if res_valid = '1' then
           if To_Integer(unsigned(address)) <= 4 then
                 address <= address + "010";
           end if;
        else
           address <= (others => '0');      
        end if;           
     end if;
end process results_address;

results_out: process(reset_low, clk)
begin
     if reset_low = '0' then
        results_out_count <= 0;
        Data_out <= (others => '0');
     elsif Rising_Edge(clk) then
        Data_out <= Magn_Result(results_out_count);
        results_out_count <= results_out_count + 1;
        if results_out_count = 3 then
           results_out_count <= 0;
        end if;
     end if;
end process results_out;

System_reset: process
-- This generates the active low system reset
begin
    reset_low <= '1';
    wait for 15 ns;
    reset_low <= '0';
    wait for 100 ns;
    reset_low <= '1';
    wait;
end process;

clock: process
-- 5MHz Clock pulse (50% low / 50% high)
begin
  while now <= 2048000 ns loop
     clk <= '1';
wait for 100 ns;
     clk <= '0';
wait for 100 ns;
  end loop;
wait;
end process;

Stimulus: process
file F: TEXT open READ_MODE is "fft_input_binary.dat";
file G: TEXT open WRITE_MODE is "fft_output_binary.dat";
variable L: LINE;
variable M: LINE;
variable Rvalue: BIT_VECTOR(15 downto 0);
variable Ivalue: BIT_VECTOR(15 downto 0);
begin
while not ENDFILE(F) loop
      wait until sample_clk = '1';
      READLINE (F, L);
READ (L, Rvalue);      -- read real data from input file
      READ (L, Ivalue);      -- read imaginary data from input file
      data_sample_real <= To_StdLogicVector(Rvalue);
      data_sample_imag <= To_StdLogicVector(Ivalue);
      WRITE (M, (To_bitvector(fft_data_real_result)), Right, 16);
      WRITE (M, (To_bitvector(fft_data_real_result)), Right, 17);
      WRITELINE (G, M);
end loop;
wait;
end process;

Counter: process(reset_low, clk)
begin
if reset_low = '0' then
                count1 <= 0;
                sample_clk <= '0';               
        elsif clk'event and clk = '1' then
                count1 <= count1 + 1;
                if count1 = 5 then
                        sample_clk <= '1';
                end if;
                if count1 = 10 then
                        sample_clk <= '0';
                        count1 <= 0;
                end if;
        end if;
end process Counter;
end;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-9-21 16:41 , Processed in 0.034997 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表