- 杂志
 搜 索: 
 论坛 » FPGA系统设计 » 请高手帮忙给修改一个VHDL程序
广告招商
版主: Hongjun , sunshine0606
 发表新贴 
 发表回复 
 请高手帮忙给修改一个VHDL程序  发表于 2008-10-09 15:45:43 [您是本帖的第269位阅读者]     [1楼] 
呢称:逆水寒215
加我为好友
自己编写的一个小程序,功能是:时钟信号CLK1使数加1,CLK2使数减1,最后设置好的这个数要和一个给定的数进行大小比较。
可编译时报错,实在不知道怎么改:
Error: Can't resolve multiple constant drivers for net "D_OUT[7]" at zdz.vhd(15)
 
 RE: 请高手帮忙给修改一个VHDL程序  发表于 2008-10-09 15:48:13 [2楼] 
呢称:逆水寒215
加我为好友
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY zdz IS
  PORT(CLK1:IN STD_LOGIC;      --加1单脉冲
              CLK2:IN STD_LOGIC;      --减1单脉冲
                RST:IN STD_LOGIC;
                  DA :OUT STD_LOGIC;   --LED指示信号     
              DATA:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END zdz;
ARCHITECTURE behav OF zdz IS
  SIGNAL D_IN : STD_LOGIC_VECTOR(7 DOWNTO 0);
  SIGNAL D_OUT: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
P1:PROCESS(CLK1,RST)                       
   BEGIN
        IF RST='1' THEN D_OUT<="10001000";
        ELSIF CLK1'EVENT AND CLK1='1' THEN
              D_OUT<=D_OUT+1;
        END IF;       
END PROCESS P1;
P2:PROCESS(CLK2,RST)                       
   BEGIN
        IF RST='1' THEN D_OUT<="10001000";
        ELSIF CLK2'EVENT AND CLK2='1' THEN
              D_OUT<=D_OUT-1;
        END IF;       
END PROCESS P2;
-----------------------------------------
   DATA<=D_OUT;
   D_IN<="10101010";
P3:PROCESS(D_OUT)                       
   BEGIN
        IF D_OUT > D_IN THEN DA<='1';
        ELSE DA<='0';
        END IF;        
END PROCESS P3; 
END behav;
 
 RE: 请高手帮忙给修改一个VHDL程序  发表于 2008-10-09 15:49:59 [3楼] 
呢称:逆水寒215
加我为好友
上面的就是那个程序,还请帮忙给修改一下。谢谢了!
 
 RE: 请高手帮忙给修改一个VHDL程序  发表于 2008-10-16 17:46:46 [4楼] 
呢称:逆水寒215
加我为好友

还没能给修改一下吗......谢谢了......
我的意思是想:按键1控制数值加1...,比如加到8后,再按键2则数值减1,且是从8开始减的...,再比如减到了2后,再按键1则数值又加1,且是从2开始加的...
就是想让它能记住修改后的这个值,以便下次修改时还能从这个数开始修改


 
 RE: 请高手帮忙给修改一个VHDL程序  发表于 2008-11-01 10:40:50 [5楼] 
呢称:vanwang
加我为好友
我改了一下,clk1和clk2为两个输入信号端,非时钟。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY zdz IS
  PORT(CLK1:IN std_logic;      --加1输入信号       
          CLK2:IN std_logic;      --减1输入信号
        RST:IN std_logic;
        DA :OUT std_logic;   --LED指示信号     
       DATA:OUT std_logic_vector(7 DOWNTO 0));
END zdz;
ARCHITECTURE behav OF zdz IS
  SIGNAL D_OUT: std_logic_vector(7 DOWNTO 0);
BEGIN
P1:PROCESS(CLK1,CLK2,RST)                       
   BEGIN
        IF RST='1' THEN D_OUT<="00001000";
        ELSIF clk1='1' THEN
              D_OUT<=D_OUT+1;
        ELSIF clk2='1' THEN
              D_OUT<=D_OUT-1;
        END IF;       
END PROCESS P1;
-----------------------------------------
P3:PROCESS(D_OUT)
VARIABLE D_IN : STD_LOGIC_VECTOR(7 DOWNTO 0):="00001000";                      
   BEGIN
        IF D_OUT > D_IN THEN DA<='1';
        ELSE DA<='0';
        END IF;        
END PROCESS P3;
 DATA<=D_OUT;
END behav;

 
 RE: 请高手帮忙给修改一个VHDL程序  发表于 2008-11-01 10:44:14 [6楼] 
呢称:vanwang
加我为好友

设定clk1的优先级最高,即clk1和clk2同时按下,识别clk1


 
共6条 1/1 1   
   快速回复主题
  用户名 : 匿名不能发帖!请先 [ 登陆 ]
  标 题:
  内 容 :
 
EEPW元器件搜索  强力提供
关于我们 | 广告服务 | 企业会员服务 | 新手上路 | 联系我们 | 友情链接
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司
Copyright ©2002 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备060382号