<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)驅(qū)動(dòng)CPLD的PWM正弦信號(hào)發(fā)生器設(shè)計(jì)

          單片機(jī)驅(qū)動(dòng)CPLD的PWM正弦信號(hào)發(fā)生器設(shè)計(jì)

          作者: 時(shí)間:2013-02-06 來(lái)源:網(wǎng)絡(luò) 收藏

          下面用硬件描述語(yǔ)言來(lái)設(shè)計(jì)CPLD 的內(nèi)部電路,這里給出VerilogHDL 版本的參考代碼。

            module Mini51b_(P0,ALE,P27,WR,);// 模塊電路命名和端口說明。

            input [7:0]P0;// 數(shù)據(jù)輸入接MCU 數(shù)據(jù)P0 口

            input ALE,P27,WR;// 幾個(gè)MCU 讀寫控制引腳

            output ;//PWM 信號(hào)輸出

            wire [7:0]addr;// 內(nèi)部地址線

            reg [7:0]daPWMc,daPWMs;// 定義計(jì)數(shù)器和占空比設(shè)定寄存器

            reg [3:0]divPWM,divPWMc;// 分頻控制變量

            reg PWM;// 輸出鎖存器

            assign addr = ALE?P0 : addr; // 低八位地址鎖存

            always @(negedge WR)// 在MCU 寫信號(hào)有效時(shí)執(zhí)行寄存器設(shè)定

            begin

            case({P27,addr[4:0]}) // 根據(jù)地址選擇寄存器

            6'b10_1000: daPWMs = P0;// 寫帶地址的寄存器

            6'b10_1001: divPWM = P0[3:0];// 寫帶地址的寄存器

            default:begin// 其它地址則讓寄存器保持不變

            daPWMs = daPWMs;

            divPWM = divPWM;

            end

            endcase

            end

            always @(posedge ALE) begin// 這里利用MCU 的ALE 做時(shí)鐘信號(hào)

            if(divPWMc == divPWM) begin // 與分頻系數(shù)比較

            divPWMc=0;

            if(daPWMc100) daPWMc = daPWMc+1; //PWM 調(diào)整精度1%

            else daPWMc = 0;

            if(daPWMs daPWMc) PWM = 0;//PWM 發(fā)生器

            else PWM = 1;

            end

            else divPWMc = divPWMc+1;// 時(shí)鐘分頻

            end

            endmodule

            關(guān)于單片機(jī)與CPLD 之間的接口請(qǐng)讀者參考本刊前幾期筆者撰寫的文章。

            與之對(duì)應(yīng)的MCU 測(cè)試程序?yàn)椋?P>  #include reg51.h>

            #include absacc.h>

            #define PWM XBYTE[0xffe8]

            #define DIV XBYTE[0xffe9]

            void main()

            {

            DIV = 15; //PWM 信號(hào)頻率計(jì)算晶振22.1184M/6/100/

            (DIV+1)=2.30K(實(shí)測(cè)2.281K)

            PWM=50; // 設(shè)定占空比50%,前面計(jì)數(shù)器范圍為0~99

            while(1) ;

            }

          pwm相關(guān)文章:pwm原理


          負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理
          分頻器相關(guān)文章:分頻器原理
          塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
          脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理
          離子色譜儀相關(guān)文章:離子色譜儀原理


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();