导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→菜鸟学VHD,请高手指点,我的程序能优化吗(节省资源)

* 99486: 菜鸟学VHD,请高手指点,我的程序能优化吗(节省资源)

   9992000 
9992000发表的帖子 

 菜鸟学VHD,请高手指点,我的程序能优化吗(节省资源)
这是一个双16位计数器(二个输入时钟,二个门控,),再用二根选择线分4次读出数据,程序编译了一下,发现很占用资源(我用的是EPM3604),高手们看看能精简吗?谢谢了
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;

ENTITY DubleCnt16 IS 
PORT( 
    clk1,CLK2,GATE1,GATE2,CLR,RD,CS : IN Std_logic; 
    DS : in std_logic_vector(1 downto 0);
    McuDataBus: out std_logic_vector(7 downto 0)
 );
END DubleCnt16;

ARCHITECTURE using_std_logic OF DubleCnt16 IS

SIGNAL    COUNT1,COUNT2 : Std_logic_vector(15 DOWNTO 0);

BEGIN
    PROCESS(CLR,CLK1,GATE1,CLK2,GATE2)
    BEGIN
      IF CLR = '1' THEN
         COUNT1   <= (OTHERS =>   '0');
       ELSIF falling_edge(clk1) AND GATE1= '1' then
--         IF COUNT1   < "1111111111111111" then
           COUNT1   <= COUNT1 +1;
--          end if;
  END IF;
      IF CLR = '1' THEN
         COUNT2   <= (OTHERS =>   '0');
     ELSIF falling_edge(clk2) AND GATE2= '1' then
--         IF COUNT2   < "1111111111111111" then
           COUNT2   <= COUNT2 +1;
--          end if;
       END IF;
    END PROCESS;

    process (COUNT1,COUNT2,DS)
    begin
 IF RD = '0' AND CS = '0' THEN
       IF DS = "00" THEN
           McuDataBus   <= COUNT1(7 DOWNTO 0); 
       ELSIF DS = "01" THEN
            McuDataBus   <= COUNT1(15 DOWNTO 8); 
       ELSIF DS = "10" THEN
            McuDataBus   <= COUNT2(7 DOWNTO 0); 
       ELSIF DS = "11" THEN
            McuDataBus   <= COUNT2(15 DOWNTO 8); 
  END IF;
 ELSE
  McuDataBus   <= (OTHERS =>   'Z');
 END IF; 
 END PROCESS;

END using_std_logic;


发表时间:2006年11月10日16:29:22

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  99531.[详细]高手都哪里去了
摘要:高手都哪里去了,请多多指点啊......(28字)
- [9992000][766次] 2006年11月12日

[上一篇帖子]:楼主。。同意楼上说的。
[下一篇帖子]:AT91SAM7X256开发板!本评估板包含以下接口: *USB设备接口一个 *&n