⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clkunit.vhd

📁 两路电机CPLD控制,串口通信
💻 VHD
字号:
--===========================================================================------  S Y N T H E Z I A B L E    miniUART   C O R E----  www.OpenCores.Org - January 2000--  This core adheres to the GNU public license  -- Design units   : miniUART core for the OCRP-1---- File name      : clkUnit.vhd---- Purpose        : Implements an miniUART device for communication purposes --                  between the OR1K processor and the Host computer through--                  an RS-232 communication protocol.--                  -- Library        : uart_lib.vhd---- Dependencies   : IEEE.Std_Logic_1164----===========================================================================----------------------------------------------------------------------------------- Revision list-- Version   Author              Date                Changes---- 1.0     Ovidiu Lupas      15 January 2000         New model-- 1.1     Ovidiu Lupas      28 May 2000     EnableRx/EnableTx ratio corrected--      olupas@opencores.org--------------------------------------------------------------------------------- Description    : Generates the Baud clock and enable signals for RX & TX--                  units. --------------------------------------------------------------------------------- Entity for Baud rate generator Unit - 9600 baudrate                       ---------------------------------------------------------------------------------library ieee;   use ieee.std_logic_1164.all;   use ieee.numeric_std.all;library work;   use work.UART_Def.all;--------------------------------------------------------------------------------- Baud rate generator-------------------------------------------------------------------------------entity ClkUnit is  port (     SysClk   : in  Std_Logic;  -- System Clock     EnableRx : out Std_Logic;  -- Control signal     EnableTx : out Std_Logic;  -- Control signal     Reset    : in  Std_Logic); -- Reset inputend entity; --================== End of entity ==============================----------------------------------------------------------------------------------- Architecture for Baud rate generator Unit-------------------------------------------------------------------------------architecture Behaviour of ClkUnit is  -----------------------------------------------------------------------------  -- Signals  -----------------------------------------------------------------------------  signal ClkDiv26  : Std_Logic;  signal tmpEnRX   : Std_Logic;  signal tmpEnTX   : Std_Logic;begin  -----------------------------------------------------------------------------  -- Divides the system clock of 40 MHz by 26  -----------------------------------------------------------------------------  DivClk26 : process(SysClk,Reset)     constant CntOne : unsigned(4 downto 0) := "00001";     variable Cnt26  : unsigned(4 downto 0);  begin     if Rising_Edge(SysClk) then        if Reset = '0' then           Cnt26 := "00000";           ClkDiv26 <= '0';        else           Cnt26 := Cnt26 + CntOne;           case Cnt26 is              when "11010" =>                  ClkDiv26 <= '1';                  Cnt26 := "00000";              when others =>                  ClkDiv26 <= '0';           end case;        end if;     end if;  end process;  -----------------------------------------------------------------------------  -- Provides the EnableRX signal, at ~ 155 KHz  -----------------------------------------------------------------------------  DivClk10 : process(SysClk,Reset,Clkdiv26)     constant CntOne : unsigned(3 downto 0) := "0001";     variable Cnt10  : unsigned(3 downto 0);  begin     if Rising_Edge(SysClk) then        if Reset = '0' then           Cnt10 := "0000";           tmpEnRX <= '0';        elsif ClkDiv26 = '1' then           Cnt10 := Cnt10 + CntOne;        end if;        case Cnt10 is             when "1010" =>                tmpEnRX <= '1';                Cnt10 := "0000";             when others =>                tmpEnRX <= '0';        end case;     end if;  end process;  -----------------------------------------------------------------------------  -- Provides the EnableTX signal, at 9.6 KHz  -----------------------------------------------------------------------------  DivClk16 : process(SysClk,Reset,tmpEnRX)     constant CntOne : unsigned(4 downto 0) := "00001";     variable Cnt16  : unsigned(4 downto 0);  begin     if Rising_Edge(SysClk) then        if Reset = '0' then           Cnt16 := "00000";           tmpEnTX <= '0';        elsif tmpEnRX = '1' then           Cnt16 := Cnt16 + CntOne;        end if;        case Cnt16 is           when "01111" =>                tmpEnTX <= '1';                Cnt16 := Cnt16 + CntOne;           when "10001" =>                Cnt16 := "00000";                tmpEnTX <= '0';           when others =>                tmpEnTX <= '0';        end case;     end if;  end process;  EnableRX <= tmpEnRX;  EnableTX <= tmpEnTX;end Behaviour; --==================== End of architecture ===================--

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -