VHDL语言学习 VHDL语言实现分频器——源代码篇

--首先贴出源代码

--本文可以直接复制粘贴,

--然后实现一个48分频的分频器。

--但是,注意文件名必须为divider48.vhd

----文件名divider48.vhd---------------

---第一部分是类似C++的#include。。之类的话

--建议查询下任何一本具有系统性的

--VHDL语言的教程,都可以知道这一部分的作用。

LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

----第二部分定义了分频器的实体--------

--实体名为divider48,

--必须和文件名保持一致

--端口为clk48_in,clk48_out

--VHDL语言不区分大小写

--------------------------------------

ENTITY divider48 IS
PORT (
clk48_in:INstd_logic;
clk48_out:OUTstd_logic

--注意这里没有分号
);
END divider48;

--第三部分为ARCHITECTURE,

--本人才疏学浅,现在只知道:

--在ARCHITECTURE中可以:

--1,定义PROCESS

--2,定义COMPONENT,然后连接

ARCHITECTURE behave OF divider48 IS

--behave这个名字可以改。

--divider48不能改。


SUBTYPE SHTINT IS INTEGER RANGE 0 TO 65535;
--定义子类型,为了节约数据空间

CONSTANT DIVIDE_PERIOD: shtINT:=48;

--VHDL语言不区分SHTINT和shtINT,

--理由前面已经说过

--此外,shtINT后面是分频周期,可以修改

BEGIN
PROCESS (clk48_in) IS

--PORCESS有一个敏感列表。
VARIABLE cnt:SHTINT;

BEGIN
if rising_edge(clk48_in)then

--每次clk48_in的上升沿到来的时候
if(cnt <= (divide_period/2)) then
【VHDL语言学习】VHDL语言实现分频器——源代码篇
clk48_out<='1';
cnt:=cnt+1;
elsif(cnt<(divide_period-1)) then
clk48_out<='0';
cnt:=cnt+1;
else
cnt:=0;
end if;

--个人认为,VHDL语言的elsif是

--一个很容易造成混乱的语句,

--不知是否等于else if


end if;
END PROCESS;
END ARCHITECTURE behave;

  

爱华网本文地址 » http://www.413yy.cn/a/25101017/355323.html

更多阅读

高品质电子分频有源音箱制作教程 分频器电感线圈制作表

早在20年前,电子技术类杂志已经开始介绍电子分频功率放大器的具体设计电路。我也先后在《音响世界》和《电子制作》杂志上介绍过大、中、小不同输出功率的电子三分频功率放大器实用电路与配套印刷电路PCB板。尤其是在2000年第7、8两

FPGA中分频器设计_VITO fpga分频器设计

在FPGA中进行电路设计时,为了得到与输入时钟不同的频率,我们的一般做法是用FPGA自带的PLL或DCM实现,这在Altera和Xilinx中是一样的。但是,如果对时钟的性能要求不高,我们也可以自己用语言实现简单的分频电路,这样就只消耗了少量的资源而实

LMC差速分动器 十堰华阳投资有限公司 宝马分动器召回

LMC差速分动器是由多种类的齿轮系统及相应的轴、壳体组成,具备传统汽车的前轮和后轮轮间差速器、前后桥轴间差速器、越野汽车分动器的综合功能。装有LMC差速分动器的车辆具有以下优点:  1、提高车辆的通过性和越野性。①混合差速:LMC

C语言实现ICMP协议Ping命令 c语言写ping命令

大部分人用ping命令只是作为查看另一个系统的网络连接是否正常的一种简单方法。在这篇文章中,作者将介绍如何用C语言编写一个模拟ping命令功能的程序。ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命

声明:《VHDL语言学习 VHDL语言实现分频器——源代码篇》为网友一语呢喃分享!如侵犯到您的合法权益请联系我们删除