这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » FPGA节省资源设计的一个例子(vhdl)

共2条 1/1 1 跳转至

FPGA节省资源设计的一个例子(vhdl)

菜鸟
2005-09-06 20:59:54     打赏
fpga的结构化特点导致近似的设计会产生交大差别的MAPING(综合之后)之结果, 因此,设计时应充分学习FPGA之结构,才可以充分利用资源。 现举例如下: 设计方法1: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is port ( inti : in std_logic; clock : in std_logic; reset : in std_logic; bout : out std_logic_vector(4 downto 0)); end counter; architecture behavior of counter is signal counter : std_logic_vector(4 downto 0); begin counter_machine:process(clock) begin if clock'event and clock='1' then if inti='0' then counter<="00001"; ***************** elsif reset='1' then if counter=19 then counter<=(others=>'0'); else counter<=counter+1; end if; else counter<=(others=>'0'); end if; end if; end process; bout<=counter; end behavior; 设计方法2 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is port ( inti : in std_logic; clock : in std_logic; reset : in std_logic; bout : out std_logic_vector(4 downto 0)); end counter; architecture behavior of counter is signal counter : std_logic_vector(4 downto 0); begin counter_machine:process(clock) begin if clock'event and clock='1' then if inti='0' then counter<="00000"; ***************** elsif reset='1' then if counter=19 then counter<=(others=>'0'); else counter<=counter+1; end if; else counter<=(others=>'0'); end if; end if; end process; bout<=counter; end behavior; 对于设计1,由于init和reset的counter置位是不同的,所以额外的LE完成 组合逻辑。 而对于设计2, 由于inti和reset可以用LE中的LUT和cascade_in和cascade_out实现计数器 的加,用programable register实现计数器的状态,所以资源利用率是比较 高的。 二者的速度几乎没有差别。 好了,该干活了。



关键词: 节省     资源     设计     一个     例子    

菜鸟
2006-11-30 06:08:00     打赏
2楼
二楼说说看~~

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]