打印

求助各位大佬,思考部分怎样回答

[复制链接]
754|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CJCCJCCJC|  楼主 | 2017-12-18 23:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, logic, ic, se, TE
    【例lab-5】
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY PULSE IS
    PORT (   CLK  : IN STD_LOGIC;
               D  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
             FOUT : OUT STD_LOGIC  );
END;
ARCHITECTURE one OF PULSE IS
    SIGNAL   FULL : STD_LOGIC;
    signal CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);      
   
BEGIN
  P_REG: PROCESS(CLK) ------进程
   
   VARIABLE  temp : STD_LOGIC_VECTOR(7 DOWNTO 0);
   
   BEGIN     
      
   temp(6 downto 0):=D(7 downto 1);
         
      IF CLK'EVENT AND CLK = '1' THEN
              IF CNT8 =  "00000000" THEN   
              CNT8 <=temp-1;   --当CNT8计数到0时,输入数据D被同步预置给计数器CNT8   
              FULL <= '1'; --同时使溢出标志信号FULL输出为高电平               
              ELSE   CNT8 <= CNT8 - 1;  --否则继续作加1计数
                         FULL <= '0';       --且输出溢出标志信号FULL为低电平      
            END IF;
          END IF;
    END PROCESS P_REG ;
   P_DIV: PROCESS(FULL)------------进程
     VARIABLE CNT2 : STD_LOGIC;
   BEGIN
   IF FULL'EVENT AND FULL = '1'
       THEN  CNT2 := NOT CNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反
         IF CNT2 = '1' THEN  FOUT <= '1';
           ELSE      FOUT <= '0';
        END IF;
   END IF;
    END PROCESS P_DIV ;
END;---------------两个进程
思考:
1、为什么FULL和CNT8定义为信号,temp定义为变量?
2、此代码只能进行偶数分频,要求输入的数大于等于4, 如果要求输入的数大于等于2应该怎么修改?

相关帖子

沙发
zhangmangui| | 2017-12-22 22:34 | 只看该作者
大学时候搞过vhdl   现在确实不会了   
被verilog影响了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝