微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > VHDL新手。PROT里面有没用到的输出量会不会影响程序

VHDL新手。PROT里面有没用到的输出量会不会影响程序

时间:10-02 整理:3721RD 点击:
我现在在做课程设计,用PWM通过低通滤波产生锯齿波,按键切换频率,并数码管显示频率。
ENTITY sheji IS
        PORT(clk:IN STD_LOGIC;
                 key:IN STD_LOGIC;
                 led: OUT STD_LOGIC;
                 output: OUT STD_LOGIC);
                -- sel: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
                -- display: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
                -- sel: OUT STD_LOGIC_vector(3 downto 0);
                -- display:OUT STD_LOGIC_vector(6 downto 0));
END ENTITY sheji;

上面这样,按键功能能用。

ENTITY sheji IS
        PORT(clk:IN STD_LOGIC;
                 key:IN STD_LOGIC;
                 led: OUT STD_LOGIC;
                 output: OUT STD_LOGIC;
                 sel: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
                display: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
                -- sel: OUT STD_LOGIC_vector(3 downto 0);
                -- display:OUT STD_LOGIC_vector(6 downto 0));
END ENTITY sheji;
这样就不能。

程序如下
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY sheji IS
        PORT(clk:IN STD_LOGIC;
                 key:IN STD_LOGIC;
                 led: OUT STD_LOGIC;
                 output: OUT STD_LOGIC);
                -- sel: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
                -- display: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
                -- sel: OUT STD_LOGIC_vector(3 downto 0);
                -- display:OUT STD_LOGIC_vector(6 downto 0));
END ENTITY sheji;
ARCHITECTURE bev OF sheji IS
SIGNAL clk_key,clk_pwm,clk_dis:STD_LOGIC:='0';
SIGNAL frequency:INTEGER RANGE 0 TO 1000:=100;
--SIGNAL count_dis:INTEGER RANGE 0 TO 4;
BEGIN
        PROCESS(clk)
        BEGIN
        IF (clk'EVENT AND clk='1') THEN
        clk_key<=not clk_key;
        clk_pwm<=not clk_pwm;
        END IF;
        END PROCESS;
       
       
       
        PROCESS(clk_key)  --anjian xiao dou
        VARIABLE count_key:INTEGER RANGE 0 TO 2500000;
        variable   a  : std_logic:='1';
        BEGIN
                IF (key='1') THEN
                        count_key:=0;
                ELSIF (clk_key'EVENT AND clk_key='1') THEN
                        IF (count_key=50000) THEN
                                count_key:=count_key;
                        ELSE count_key:=count_key+1;
                        END IF;
                END IF;
                IF (count_key=49999 )THEN
                         --a:= not a;
                         IF(frequency=100) THEN
                                frequency<=200;a:='1';
                        ELSE frequency<=100;a:='0';
                        END IF;
                --ELSIF (count_key=49999 AND frequency=100 )THEN
                        --frequency<=200;a:=not a;
                --ELSE frequency<=200;
                END IF;
                led<=a;                       
        END PROCESS;       
       
       
       
        PROCESS(clk_pwm)
        VARIABLE count_pwm :INTEGER RANGE 0 TO 3000;
        VARIABLE duty :INTEGER RANGE 0 TO 3000;
        BEGIN
                IF(clk_pwm'EVENT AND clk_pwm = '1') THEN
                        count_pwm:=count_pwm+1;
                        IF(count_pwm>duty) THEN
                                output<='0';
                        ELSE output<='1';
                        END IF;
                        IF(count_pwm=frequency)THEN
                                count_pwm:=0;
                                duty:=duty+1;
                        IF(duty=frequency)THEN
                                        duty:=0;
                        END IF;
                        END IF;
                END IF;
        END PROCESS;
END ARCHITECTURE;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top