在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2331|回复: 0

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

[复制链接]
发表于 2014-5-22 19:38:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我现在在做课程设计,用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;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-22 16:15 , Processed in 0.028084 second(s), 13 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表