集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 5404|回复: 11

求大侠解答~~~~~~~~

[复制链接]
chenhaoyumax 发表于 2011-5-18 16:12:23 | 显示全部楼层 |阅读模式
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;

ENTITY f_div IS
       PORT (clk_in    :  IN  std_logic;
             clk       :  OUT std_logic);
END f_div;

ARCHITECTURE Behavioral OF f_div IS
BEGIN
      PROCESS(clk_in)
             VARIABLE i: std_logic_vector(9 DOWNTO 0): =(OTHERS =>'0');
      BEGIN
             IF (rising_edge(clk_in)) THEN
                 i: =i+1;
                 clk <=i(9);
             END IF;
      END PROCESS;
END Behavioral;

文中有5处错误。。。。。。,实力有限,拜求解答~~
至芯兴洪 发表于 2011-5-21 20:00:13 | 显示全部楼层
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;

ENTITY f_div IS
       PORT (clk_in    :  IN  std_logic;
             clk       :  OUT std_logic);
END f_div;

ARCHITECTURE Behavioral OF f_div IS
               signal i: integer range 0 to 9;
BEGIN
      PROCESS(clk_in)
      BEGIN
             IF (rising_edge(clk_in)) THEN
                 i< =i+1;
                 clk <=i[9];
             END IF;
      END PROCESS;
END Behavioral;
注意计数器的定义位子和方式

再试试看
 楼主| chenhaoyumax 发表于 2011-5-24 16:32:21 | 显示全部楼层
回复 2# 至芯兴洪


   呵呵,谢谢了,能给下您的qq么,我现在是在毕业设计阶段,想多请教您几个问题~
zzzdaizi 发表于 2011-5-24 22:38:33 | 显示全部楼层
我编译了,没有错误啊,
 楼主| chenhaoyumax 发表于 2011-5-25 16:12:52 | 显示全部楼层
回复 4# zzzdaizi


    你是直接复制我的程序然后仿真没有错误的么?
zzzdaizi 发表于 2011-5-25 21:25:36 | 显示全部楼层
回复 5# chenhaoyumax


    就是直接复制的,不过这块赋值的时候  i< =i+1;clk <=i[9]; 中间好像多了个空格
 楼主| chenhaoyumax 发表于 2011-5-26 10:14:34 | 显示全部楼层
回复 6# zzzdaizi


    呵呵,是的饿,就是这里出现问题啦。很感谢
   能联系您下么~~~~
 楼主| chenhaoyumax 发表于 2011-5-26 15:54:40 | 显示全部楼层
回复 7# chenhaoyumax


    帮我再看下这个吧~~~呵呵
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;

ENTITY sum_cash IS
       PORT(clk               :IN    std_logic;
            rst               :IN    std_logic;
            C10               :IN    std_logic;
            C50               :IN    std_logic;
            C100              :IN    std_logic;
            lock_out_entry    :IN    std_logic;
            clear             :IN    std_logic;
            RC10              :IN    std_logic;
            RC50              :IN    std_logic;
            RC100             :IN    std_logic;
            sum               :OUT   integer RANGE 0 TO 20;
            sum_10            :INOUT integer RANGE -10 TO 15;
            sum_50            :INOUT integer RANGE -10 TO 15;
            sum_100           :INOUT integer RANGE -10 TO 15);
END sum_cash;

ARCHITECTURE Behavioral OF sum_cash IS
BEGIN
     sum_cashROCESS(rst,clk)
           VARIABLE x : integer RANGE 0 TO 20;
     BEGIN
          x := sum_10+5*sum_50+10*sum_100;
          IF (x<21) THEN
              sum <=x;
          ELSE
              sum<=20;
          END IF;
          IF (rst='1') THEN
              sum_10 <=0;
              sum_50 <=0;
              sum_100 <=0;
          ELSE
             IF (clear='1') THEN
                 sum_10 <= 0;
                 sum_50 <= 0;
                 sum_100 <= 0;
                 sum <= 0;
             END IF;
          IF (rising_edge(clk)) THEN
              IF (lock_out_entry ='0') THEN
                  IF (C10='1') THEN
                      sum_10 <=sum_10 + 1;   
                  END IF;
                  IF (C50='1') THEN
                      sum_50 <=sum_50 + 1;     
                  END IF;
                  IF (C100='1') THEN
                      sum_100 <=sum_100 + 1;   
                  END IF;
              ELSE   
                  IF (RC10='1') THEN                           
                      sum_10 <=sum_10-1;
                  END IF;
                  IF (RC50='1') THEN         
                      sum_50 <=sum_50-1;
                  END IF;
                  IF  (RC100='1')  THEN        
                      sum_100 <=sum_100-1;
                  END IF;
              END IF;
         END IF;
     END IF;
    END PROCESS;
END Behavioral;

错误提醒都不懂什么意思~~
wangjinzeng 发表于 2011-5-30 14:46:02 | 显示全部楼层
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;

ENTITY sum_cash IS
       PORT(clk               :IN    std_logic;
            rst               :IN    std_logic;
            C10               :IN    std_logic;
            C50               :IN    std_logic;
            C100              :IN    std_logic;
            lock_out_entry    :IN    std_logic;
            clear             :IN    std_logic;
            RC10              :IN    std_logic;
            RC50              :IN    std_logic;
            RC100             :IN    std_logic;
            sum               :OUT   integer RANGE 0 TO 20;
            sum_10            :INOUT integer RANGE -10 TO 15;
            sum_50            :INOUT integer RANGE -10 TO 15;
            sum_100           :INOUT integer RANGE -10 TO 15);
END sum_cash;

ARCHITECTURE Behavioral OF sum_cash IS
           signal x : integer RANGE 0 TO 20;

BEGIN

           x<= sum_10+5*sum_50+10*sum_100;

     sum_cashROCESS:process (rst,clk,x,clear)
     BEGIN
          IF (x<21) THEN
              sum <=x;
          ELSE
              sum<=20;
          END IF;
          IF (rst='1') THEN
              sum_10 <=0;
              sum_50 <=0;
              sum_100 <=0;
          ELSE
             IF (clear='1') THEN
                 sum_10 <= 0;
                 sum_50 <= 0;
                 sum_100 <= 0;
             --END IF;
             else
                          IF (clk'event and clk='1') THEN
                                  IF (lock_out_entry ='0') THEN
                                          IF (C10='1') THEN
                                                  sum_10 <=sum_10 + 1;   
                                          END IF;
                                          IF (C50='1') THEN
                                                  sum_50 <=sum_50 + 1;     
                                          END IF;
                                          IF (C100='1') THEN
                                                  sum_100 <=sum_100 + 1;   
                                          END IF;
                                  ELSE   
                                          IF (RC10='1') THEN                           
                                                  sum_10 <=sum_10-1;
                                          END IF;
                                          IF (RC50='1') THEN         
                                                  sum_50 <=sum_50-1;
                                          END IF;
                                          IF  (RC100='1')  THEN        
                                                  sum_100 <=sum_100-1;
                                          END IF;
                                  END IF;
                         END IF;
                END IF;
                end if;
    END PROCESS ;
END Behavioral;
语法上没错误了,不过不知道你想实现啥!
 楼主| chenhaoyumax 发表于 2011-5-30 17:23:53 | 显示全部楼层
回复 9# wangjinzeng


    你还在么,能加我q么~331652998~
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-23 11:15 , Processed in 0.086840 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表