阅读:1036回复:1
请教一个vhdl语法的问题
我正在做一个多路解复用器,我用的是计数加条件判断的算法:先用计数器从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个左右,芯片写不下。 我是新手,望各位高手指教。 |
|
沙发#
发布于:2003-02-20 11:27
不好意思,我自己已经解决了,我用的是leonardo综合,开始用默认设置,后来我把all_black_box_modgens换成alt_auto_fast_io就满足要求了,程序没有变,宏单元也没有增加。看来我有必要弄清楚这些editor分别适合什么情况下使用,哪位能指点一下,一定给分
|
|