想实现一个简单的相等比较器。 功能:if a=b then c=1 else c=0; 方法 1。自己用vhdl编写 2。用core generator生成 生成之后,直接用XST综合工具综合了一下,没有任何引脚之类的限制,产生如下两个结果。 1。--------------------------vhdl生成 Delay: 6.779ns (Levels of Logic = 10) Source: Uppins<0> (PAD) Destination: Outpins (PAD) Data Path: Uppins<0> to Outpins Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ IBUF:I->O 1 0.653 0.608 Uppins_0_IBUF (Uppins_0_IBUF) LUT4:I0->O 1 0.347 0.000 XLXI_1/Mcompar_Outpins_cmp_eq0000_lut<0> (N4) MUXCY:S->O 1 0.235 0.000 XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<0> (XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<0>) MUXCY:CI->O 1 0.042 0.000 XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<1> (XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<1>) MUXCY:CI->O 1 0.042 0.000 XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<2> (XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<2>) MUXCY:CI->O 1 0.042 0.000 XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<3> (XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<3>) MUXCY:CI->O 1 0.042 0.000 XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<4> (XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<4>) MUXCY:CI->O 1 0.042 0.000 XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<5> (XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<5>) MUXCY:CI->O 1 0.601 0.383 XLXI_1/Mcompar_Outpins_cmp_eq0000_cy<6> (Outpins_OBUF) OBUF:I->O 3.743 Outpins_OBUF (Outpins) ---------------------------------------- Total 6.779ns (5.789ns logic, 0.990ns route) (85.4% logic, 14.6% route)
2。--------------------------core generator生成 All values displayed in nanoseconds (ns) ========================================================================= Timing constraint: Default path analysis Total number of paths / destination ports: 28 / 1 ------------------------------------------------------------------------- Delay: 7.523ns (Levels of Logic = 8) Source: Uppins<9> (PAD) Destination: Outpins (PAD) Data Path: Uppins<9> to Outpins Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ IBUF:I->O 1 0.653 0.608 Uppins_9_IBUF (Uppins_9_IBUF) begin scope: 'XLXI_1' begin scope: 'BU2' LUT4:I0->O 1 0.347 0.608 U0/gen_structure_logic.gen_nonpipelined.a_equal_notequal_b.i_a_eq_ne_b/i_use_carry_plus_luts.lut_and.i_gate_bit/tier_gen[1].i_tier/loop_tiles[0].i_tile/lut_o_1_and000080 (U0/gen_structure_logic.gen_nonpipelined.a_equal_notequal_b.i_a_eq_ne_b/i_use_carry_plus_luts.lut_and.i_gate_bit/tier_gen[1].i_tier/loop_tiles[0].i_tile/lut_o_1_and0000_map32) LUT3:I0->O 1 0.347 0.000 U0/gen_structure_logic.gen_nonpipelined.a_equal_notequal_b.i_a_eq_ne_b/i_use_carry_plus_luts.lut_and.i_gate_bit/tier_gen[1].i_tier/loop_tiles[0].i_tile/lut_o_1_and0000100 (U0/gen_structure_logic.gen_nonpipelined.a_equal_notequal_b.i_a_eq_ne_b/i_use_carry_plus_luts.lut_and.i_gate_bit/tier_gen[1].i_tier/loop_tiles[0].i_tile/lut_o<1>) MUXCY:S->O 1 0.235 0.000 U0/gen_structure_logic.gen_nonpipelined.a_equal_notequal_b.i_a_eq_ne_b/i_use_carry_plus_luts.lut_and.i_gate_bit/tier_gen[1].i_tier/loop_tiles[0].i_tile/opt_carry_tile.and_or.carry_muxs[1].i_mux (U0/gen_structure_logic.gen_nonpipelined.a_equal_notequal_b.i_a_eq_ne_b/i_use_carry_plus_luts.lut_and.i_gate_bit/tier_gen[1].i_tier/loop_tiles[0].i_tile/async_o<1>) MUXCY:CI->O 1 0.601 0.383 U0/gen_structure_logic.gen_nonpipelined.a_equal_notequal_b.i_a_eq_ne_b/i_use_carry_plus_luts.lut_and.i_gate_bit/tier_gen[1].i_tier/loop_tiles[0].i_tile/opt_carry_tile.and_or.carry_muxs[0].i_mux (a_eq_b) end scope: 'BU2' end scope: 'XLXI_1' OBUF:I->O 3.743 Outpins_OBUF (Outpins) ---------------------------------------- Total 7.523ns (5.926ns logic, 1.598ns route) (78.8% logic, 21.2% route) 问题: 1。如果说延迟越短越好的话,为什么core generator不如自己编写的vhdl生成的好?是不是还有其他的性能评价参数? 比如说那个levels of logic 是越小越好吗? 2。都说core generator是针对xilinx进行优化的,能用最好就用,是这样吗?与上面的结果矛盾呀。 3。vhdl实现比较器就用到了 if a=b then c<='1' else c<='0'; 这一条语句,还有更节省资源,时延短的吗? 4。另外,在用原理图编辑的时候,类似“比较器”这样的器件也可以直接找到,添加就可以,这种和core generator或者自己用vhdl生成的相比较,哪个好点? 请不吝赐教,多谢了。
[此贴子已经被作者于2007-4-10 22:07:26编辑过] |