luorenfei
驱动小牛
驱动小牛
  • 注册日期2003-02-17
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1037回复:1

请教一个vhdl语法的问题

楼主#
更多 发布于:2003-02-20 09:32
我正在做一个多路解复用器,我用的是计数加条件判断的算法:先用计数器从0 数到99,然后根据计数器的值选择不同的通道。我用了如下语句:

port( ....
    a,b,c,e:in std_logic_vector(0 to 3);
     ....);
.......

process (rx_clk1,reset)
.................
......
   if rx_clk1\'event and rx_clk1=\'1\' then
    if   halfword_count= a then
       memoryrx(halfword_count) <=rxd;
uart_in(4 to 7)<=rxd;
    halfword_count<= halfword_count+1;
    elsif  halfword_count= e  then
      memoryrx(halfword_count) <=rxd;
 uart_in(0 to 3)<=rxd;  
 halfword_count<= halfword_count+1;
   elsif  halfword_count= b then  
memoryrx(halfword_count) <=uart_out(4 to 7);  
 halfword_count<= halfword_count+1;
   elsif halfword_count= c then  
 memoryrx(halfword_count) <=uart_out(0 to 3);  
 halfword_count<= halfword_count+1;
               else
memoryrx(halfword_count) <=rxd;
 halfword_count<= halfword_count+1;
end if;
end if;
......
end process;
用这一段语法是否有问题,因为综合软件显示rx_clk1的速度达不到要求。我用的是altera 的flex10k20rc208-3.能否在不更换芯片的情况下使速度提高一点?当然宏单元也不能增加太多,因为这个片子我只剩下20%可用空间了。我已经试过把
uart_in(4 to 7)<=rxd;uart_in(0 to 3)<=rxd;
 改为uart_in(0 to 3)<= memoryrx(a);
     uart_in(4 to 7)<=memoryrx(e);
然后放到进程外面,使他们不绑定rx_clk1,结果速度是提高了,但是宏单元增加了500个左右,芯片写不下。
我是新手,望各位高手指教。

luorenfei
驱动小牛
驱动小牛
  • 注册日期2003-02-17
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-20 11:27
不好意思,我自己已经解决了,我用的是leonardo综合,开始用默认设置,后来我把all_black_box_modgens换成alt_auto_fast_io就满足要求了,程序没有变,宏单元也没有增加。看来我有必要弄清楚这些editor分别适合什么情况下使用,哪位能指点一下,一定给分
游客

返回顶部