日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 循環(huán)格雷碼VHDL源程序

          循環(huán)格雷碼VHDL源程序

          作者: 時間:2011-11-24 來源:網絡 收藏

            我們知道格雷碼計數的特點就是相鄰的碼字只有一個比特不同,那么我們在設計格雷碼計數時找到這個比特取反就是了。找到這個比特的思路: 先將格雷碼換算成二進制碼,此二進制碼中從LSB到MSB第一個為''0''的比特對應的格雷碼位置即為所需位置,如果全''1''則MSB的位置為所需位置。

            下面以為例,給出一個VHDL程序。

            Library Ieee;

            Use Ieee.Std_logic_1164.All;

            Entity Demo Is Port(

            Clock :In Std_logic;

            Q : Out Std_logic_vector(3 Downto 0)); --Vector的長度隨用戶而定,這里只是一個示例。

            End Demo;

            Architecture MyFavor Of Demo Is

            Function NxG(Argv :Std_logic_vector) Return Std_logic_vector Is --此函數完成輸入一個格雷碼返回下一個數的格雷碼

            Alias GV :Std_logic_vector(1 To Argv''Length) Is Argv;

            Variable BV,GC :Std_logic_vector(1 To Argv''Length);

            Begin

            BV(1) := GV(1);

            For I In 2 To Argv''Length Loop

            BV(I) := GV(I) Xor BV(I - 1);

            End Loop;

            GC := GV;

            For I In Argv''Length Downto 1 Loop

            If BV(I) = ''0'' Or I = 1 Then

            GC(I) := Not GC(I);

            Exit;

            End If;

            End Loop;

            Return GC;

            End NxG;

            Signal GC :Std_logic_vector(3 Downto 0);

            Begin

            Process(Clock) Begin

            If Rising_edge(Clock) Then

            GC = NxG(GC);

            End If;

            End Process;

            Q = GC;

            End MyFavor;



          評論


          技術專區(qū)

          關閉