想实现一个简单的相等比较器。
功能: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编辑过]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |