久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5814|回復(fù): 2
收起左側(cè)

vhdl數(shù)字鐘的設(shè)計

[復(fù)制鏈接]
ID:70976 發(fā)表于 2014-12-27 16:26 | 顯示全部樓層 |閱讀模式
一、系統(tǒng)的設(shè)計要求
假設(shè)外部輸入脈沖為1Hz,要求使用該頻率設(shè)計一個時間可調(diào),并通過LED七段共陰極數(shù)碼管能夠顯示時、分、秒的數(shù)字鐘。
二、系統(tǒng)的設(shè)計實現(xiàn)
眾所周知,一天等于24h1h等于60min1min等于60s。進(jìn)行設(shè)計數(shù)字鐘的設(shè)計時,先對1s的時鐘進(jìn)行計數(shù),當(dāng)計數(shù)達(dá)到60次時,輸出1個分鐘(min)脈沖;當(dāng)1min的時鐘計數(shù)達(dá)到60次時,輸出1個小時(h)脈沖,若1h時鐘計數(shù)達(dá)到23次時,并且1min的計數(shù)到59次、1s的計數(shù)也達(dá)到59次,再來11s的脈沖,數(shù)字鐘就自己復(fù)位,重新從零開始計時。
綜上所述,數(shù)字鐘由3個計數(shù)模塊(二十四進(jìn)制計數(shù)器、十進(jìn)制計數(shù)器和六進(jìn)制計數(shù)器)、7LED驅(qū)動顯示模塊和頂層模塊構(gòu)成,如圖下所示。頂層模塊通過調(diào)用相應(yīng)的模塊,將這些模塊進(jìn)行有機(jī)的連接即可實現(xiàn)設(shè)計任務(wù)。
1.頂層模塊程序
頂層模塊程序的實體中應(yīng)定義時鐘脈沖輸入端(CLK)、設(shè)置時間使能端(SET)。時間調(diào)整輸入端(包括時、分、秒的高位和低位)、時鐘數(shù)據(jù)顯示輸出端(包括時、分、秒的高位和低位)。
由于十進(jìn)制計數(shù)模塊和六進(jìn)制計數(shù)模塊會產(chǎn)生計數(shù)溢出信號(CARRY_OUT)而這些溢出信號有可能作為下一計數(shù)模塊的時鐘輸入脈沖(CLK),因此在頂層模塊程序的結(jié)構(gòu)體中需要定義相應(yīng)的暫存計數(shù)溢出信號(CARRY1~CARRY4)3個計數(shù)模塊的輸出將為4位,這些4位輸出的數(shù)據(jù)作為LED驅(qū)動模塊的顯示內(nèi)容,所以也需定義一些4為輸出信號。頂層模塊程序編寫如下:
--數(shù)字鐘的頂層模塊程序 dianzizhong.VHD
  LIBRARY  IEEE;
  USE  IEEE.STD_LOGIC_1164.ALL;
  ENTITY  dianzizhong   IS
PORT( CLK: IN  STD_LOGIC;                          --定義外部脈沖輸入端
      SET: IN  STD_LOGIC;                          --設(shè)置時間使能端
      DIN_S_L: IN STD_LOGIC_VECTOR(3 DOWNTO 0);     --秒鐘的低位調(diào)整輸入端
      DIN_S_H: IN STD_LOGIC_VECTOR(3 DOWNTO 0);     --秒鐘的高位調(diào)整輸入端
      DIN_M_L: IN STD_LOGIC_VECTOR(3 DOWNTO 0);     --分鐘的低位調(diào)整輸入端
      DIN_M_H: IN STD_LOGIC_VECTOR(3 DOWNTO 0);    --分鐘的高位調(diào)整輸入端
      DIN_H_L: IN STD_LOGIC_VECTOR(3 DOWNTO 0);     --小時的低位調(diào)整輸入端
      DIN_H_H: IN STD_LOGIC_VECTOR(3 DOWNTO 0);     --小時的高位調(diào)整輸入端
      CQ_S_L: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);    --秒鐘的低位顯示輸入端
      CQ_S_H: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);    --秒鐘的高位顯示輸入端
      CQ_M_L: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);    --分鐘的低位顯示輸入端
      CQ_M_H: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);    --分鐘的高位顯示輸入端
      CQ_H_L: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);    --小時的低位顯示輸入端
      CQ_H_H: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));   --小時的高位顯示輸入端
  END dianzizhong;
  ARCHITECTURE ART OF dianzizhong IS
  COMPONENT CNT10
PORT(CLK: IN STD_LOGIC;                            --定義外部脈沖輸入端
      SET: IN STD_LOGIC;                            --設(shè)置時間使能端
      DIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);      --預(yù)置時間值輸入端
      CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);     --十進(jìn)制計數(shù)輸出端
      CARRY_OUT: OUT STD_LOGIC);                 --十進(jìn)制計數(shù)溢出端
  END COMPONENT CNT10;
  COMPONENT CNT6
PORT(CLK: IN STD_LOGIC;                           --定義外部脈沖輸入端
      SET:IN STD_LOGIC;                            --設(shè)置時間使能端
      DIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);     --預(yù)置時間值輸入端
      CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);      --六進(jìn)制計數(shù)輸入端
      CARRY_OUT: OUT STD_LOGIC);                 --六進(jìn)制計數(shù)溢出端
  END COMPONENT CNT6;
  COMPONENT CNT24
PORT(CLK: IN STD_LOGIC;                            --定義外部脈沖輸入端
      SET:IN STD_LOGIC;                             --設(shè)置時間使能端
      DIN_H: IN STD_LOGIC_VECTOR(3 DOWNTO 0);    --預(yù)置時間的高位輸入端
      DIN_L: IN STD_LOGIC_VECTOR(3 DOWNTO 0);    --預(yù)置時間的低位輸入端
      CQ_H: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);   --計數(shù)高位輸出端
      CQ_L: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));   --計數(shù)低位輸出端
  END COMPONENT CNT24;
COMPONENT LED_DRIV IS
   PORT( DIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);        --顯示數(shù)據(jù)輸入端
     DOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));    --顯示數(shù)據(jù)輸出端
END COMPONENT LED_DRIV;
  SIGNAL CARRY1: STD_LOGIC;
  SIGNAL CARRY2: STD_LOGIC;
  SIGNAL CARRY3: STD_LOGIC;
  SIGNAL CARRY4: STD_LOGIC;
  SIGNAL CQI_S_L: STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL CQI_S_H: STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL CQI_M_L: STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL CQI_M_H: STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL CQI_H_L: STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL CQI_H_H: STD_LOGIC_VECTOR(3 DOWNTO 0);
  BEGIN                     --使用元件例化語句,通過基本模塊的級聯(lián)實現(xiàn)數(shù)字鐘
  U0: CNT10 PORT MAP(CLK=>CLK,SET=>SET,DIN=>DIN_S_L,
            CQ=>CQI_S_L,CARRY_OUT=>CARRY1);
  U2: CNT6 PORT MAP(CLK=>CARRY1,SET=>SET,DIN=>DIN_S_H,
            CQ=>CQI_S_H,CARRY_OUT=>CARRY2);
  U3: CNT10 PORT MAP(CLK=>CARRY2,SET=>SET,DIN=>DIN_M_L,
            CQ=>CQI_M_L,CARRY_OUT=>CARRY3);
  U4: CNT6 PORT MAP(CLK=>CARRY3,SET=>SET,DIN=>DIN_M_H,
            CQ=>CQI_M_H,CARRY_OUT=>CARRY4);
  U5: CNT24 PORT MAP(CLK=>CARRY4,SET=>SET,DIN_H=>DIN_H_H,
            DIN_L=>DIN_H_L,CQ_H=>CQI_H_H,CQ_L=>CQI_H_L);
  U6: LED_DRIV PORT MAP(DIN=>CQI_S_L,DOUT=>CQ_S_L);
  U7: LED_DRIV PORT MAP(DIN=>CQI_S_H,DOUT=>CQ_S_H);
  U8: LED_DRIV PORT MAP(DIN=>CQI_M_L,DOUT=>CQ_M_L);
  U9: LED_DRIV PORT MAP(DIN=>CQI_M_H,DOUT=>CQ_S_H);
  U10: LED_DRIV PORT MAP(DIN=>CQI_H_L,DOUT=>CQ_H_L);
  U11: LED_DRIV PORT MAP(DIN=>CQI_H_H,DOUT=>CQ_H_H);
  END ART;
2.十進(jìn)制計數(shù)器模塊程序
使用VHDL編寫程序時,在實體中應(yīng)定義時鐘脈沖輸入端(CLK)、設(shè)置時間使能端(SET)、預(yù)置數(shù)據(jù)輸入端(DIN)、計數(shù)脈沖輸出端(CQ)和計數(shù)脈沖溢出端(CARRY_OUT)。十進(jìn)制計數(shù)器模塊程序編寫如下:
--十進(jìn)制計數(shù)器的源程序CNT10.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10  IS
  PORT( CLK: IN  STD_LOGIC;
        SET: IN  STD_LOGIC;
        DIN: IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
         CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
        CARRY_OUT: OUT STD_LOGIC);
END CNT10;
ARCHITECTURE ART OF CNT10 IS
SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
  PROCESS(CLK,SET,DIN)
    BEGIN
      IF SET='1' THEN
               CQI<=DIN;
               CARRY_OUT<='0';
        ELSIF CLK'EVENT AND CLK='1' THEN
            IF CQI="1001"  THEN
              CQI<="0000";
              CARRY_OUT<='1';
              ELSE
                CQI<=CQI+'1';
                CARRY_OUT<='0';
             END IF;
           END IF;
      END PROCESS ;
      CQ<=CQI;
END ART;
3.六進(jìn)制計數(shù)器模塊程序
使用VHDL編寫程序時,在實體中應(yīng)定義時鐘脈沖輸入端(CLK)、設(shè)置時間使能端(SET)、預(yù)置數(shù)據(jù)輸入端(DIN)、計數(shù)脈沖輸出端(CQ)和計數(shù)脈沖溢出端(CARRY_OUT)。六進(jìn)制計數(shù)器模塊程序編寫如下:
--六進(jìn)制計數(shù)器的源程序CNT6.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY  CNT6  IS
  PORT( CLK: IN  STD_LOGIC;
        SET: IN  STD_LOGIC;
        DIN: IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
         CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
        CARRY_OUT: OUT STD_LOGIC);
END CNT6;
ARCHITECTURE ART OF CNT6 IS
SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
  PROCESS(CLK,SET,DIN)
    BEGIN
      IF SET='1' THEN
               CQI<=DIN;
               CARRY_OUT<='0';
        ELSIF CLK'EVENT AND CLK='1' THEN
            IF CQI="0101"  THEN
              CQI<="0000";
              CARRY_OUT<='1';
              ELSE
                CQI<=CQI+'1';
                CARRY_OUT<='0';
             END IF;
           END IF;
      END PROCESS ;
      CQ<=CQI;
END ART;
4.二十四進(jìn)制計數(shù)器模塊程序
使用VHDL編寫程序時,在實體中應(yīng)定義時鐘脈沖輸入端(CLK)、設(shè)置時間使能端(SET_)、預(yù)置數(shù)據(jù)輸入端(DIN_HDIN_L)、計數(shù)脈沖輸出端(CQ_HCQ_L)。二十四進(jìn)制計數(shù)器模塊程序編寫如下:
   
--二十四進(jìn)制計數(shù)器的源程序CNT24.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY  CNT24  IS
  PORT( CLK: IN  STD_LOGIC;
        SET: IN  STD_LOGIC;
        DIN_H: IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
        DIN_L: IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
         CQ_H: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
         CQ_L: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CNT24;
ARCHITECTURE ART OF CNT24 IS
SIGNAL CQI_H:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL CQI_L:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
  PROCESS(CLK,SET,DIN_H,DIN_L)
    BEGIN
      IF SET='1' THEN
               CQI_H<=DIN_H;
               CQI_L<=DIN_L;
        ELSIF CLK'EVENT AND CLK='1' THEN
            IF (CQI_H="0010" AND CQI_L="0011")  THEN
              CQI_H<="0000";
              CQI_L<="0000";
            ELSIF (CQI_H/="0010" AND CQI_L="1001") THEN
              CQI_H<=CQI_H+'1';
              CQI_L<="0000";
            ELSE
              CQI_H<=CQI_H;
              CQI_L<=CQI_L+1;
             END IF;
          END IF;
       END PROCESS ;
        CQ_H<=CQI_H;
        CQ_L<=CQI_L;
END ART;
5. 7LED顯示驅(qū)動模塊程序
7LED7個發(fā)光二極管組成,當(dāng)某一發(fā)光二極管導(dǎo)通時,相應(yīng)地點亮某一點或某一段筆畫,通過二極管不同的亮暗組合形成不同的數(shù)字、字母及其它符號。其結(jié)構(gòu)如下               
--共陰極LED顯示模塊程序LED_DRIV.VHD  
LIBRARY  IEEE;
USE  IEEE.STD_LOGIC_1164.ALL;
ENTITY LED_DRIV IS
   PORT (DIN: IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
         DOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END LED_DRIV;
ARCHITECTURE ART OF LED_DRIV IS
   BEGIN
     PROCESS(DIN)
       BEGIN
         CASE DIN IS
           WHEN "0000"=>DOUT<="0111111";    --顯示“0
           WHEN "0001"=>DOUT<="0000110";    --顯示“1
           WHEN "0010"=>DOUT<="1011011";    --顯示“2
           WHEN "0011"=>DOUT<="1001111";    --顯示“3
           WHEN "0100"=>DOUT<="1100110";    --顯示“4
           WHEN "0101"=>DOUT<="1101101";    --顯示“5
           WHEN "0110"=>DOUT<="1111101";    --顯示“6
           WHEN "0111"=>DOUT<="0000111";    --顯示“7
           WHEN "1000"=>DOUT<="1111111";    --顯示“8
           WHEN "1001"=>DOUT<="1101111";    --顯示“9
           WHEN OTHERS=>NULL;
         END CASE;
     END PROCESS;
END ART;

回復(fù)

使用道具 舉報

ID:84125 發(fā)表于 2015-6-28 09:47 | 顯示全部樓層
你好,我是初學(xué)者,對代碼還不能理解,只能照搬,但是編譯的時候出錯了。
Error: Net "CQ_S_H[1]~5", which fans out to "CQ_S_H[1]", cannot be assigned more than one value
        Error: Net is fed by "LED_DRIV:U7|DOUT[1]"
        Error: Net is fed by "LED_DRIV:U9|DOUT[1]"
請問這是怎么回事?該如何解決
回復(fù)

使用道具 舉報

ID:368338 發(fā)表于 2018-7-10 19:04 | 顯示全部樓層
U8: LED_DRIV PORT MAP(DIN=>CQI_M_L,DOUT=>CQ_M_L);
  U9: LED_DRIV PORT MAP(DIN=>CQI_M_H,DOUT=>CQ_M_H);

U9最后面是CQ_M_H,不是CQ_L_H
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品久久久久久久久中文字幕 | 美日韩精品 | 日本在线一二 | 成人av高清 | 日韩欧美二区 | 第四色狠狠 | 日韩一区二区三区四区五区六区 | 夜夜艹 | 美女视频一区二区三区 | 日日操日日干 | 国产午夜亚洲精品不卡 | 亚洲国产精品一区在线观看 | 在线播放国产一区二区三区 | 欧美精品在线一区二区三区 | 五月婷婷中文 | 99pao成人国产永久免费视频 | 色综合色综合网色综合 | 欧美亚洲视频 | 国内精品视频在线观看 | 免费在线观看一区二区 | 国产综合视频 | 黄色国产在线视频 | 国产成人一区二区 | 久久久亚洲一区 | 亚洲久久在线 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 国产在线高清 | 午夜在线免费观看 | 国产视频久 | 久久精品小视频 | 在线免费观看日本视频 | 一区二区在线 | 欧美国产一区二区 | a在线视频观看 | 亚洲va欧美va天堂v国产综合 | 国产精品成人国产乱一区 | 国产精品久久久久999 | 日本精品裸体写真集在线观看 | 午夜电影网站 | 日韩电影中文字幕 | 日本在线中文 |