• 基于CPLD的VHDL代码学习、解析


    前人种树,后人乘凉;创造不易,请勿迁移~ 

    daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主
    daisy.skye擅长嵌入式,Qt,Linux,等方面的知识
    https://blog.csdn.net/qq_40715266?type=blog

    版权声明:本文为CSDN博主「daisy.skye」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ————————————————

    CPLD(Complex Programmable Logic Device)即复杂可编程逻辑器件,是一种数字电路设计的可编程芯片。它由多个可编程逻辑门和存储单元构成,能够实现复杂的逻辑功能和存储功能。

    VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。其架构分为三层,即实体层、体系结构层和行为层。实体层描述的是被建模的元素或组件的物理结构;体系结构层描述的是实体层的组合方式和交互方式;行为层描述的是元素或组件的功能行为和计算模型。VHDL还提供了一种自定义构造器的语法,可以定义用户自定义的数据类型、运算符和函数,大大方便了编程工作。

    简单的来说就0和1,而0和1 的由来可以追溯到20世纪40年代末期,当时美国的数学家和计算机科学家Claude Shannon提出了“布尔代数”(也称“开关代数”),这是一种基于逻辑的数学模型,用于描述和分析数字电路。

    布尔代数的核心思想是将逻辑运算符(如与、或、非等)应用到二进制数上,从而实现计算机运算。由于二进制只有0和1两个数,因此在数电中也被称为“真假”或“开关”状态。

    利用0和1这两种状态,可以构建各种逻辑门电路,如逻辑与门、逻辑或门、逻辑非门等,这些门可以实现各种算术、逻辑运算和控制功能,从而构成了现代计算机的基础。

    而这也造就了vdhl语言,用芯片最了解的语言,0和1 ,也就是上电不上电,这种高低电平的转换来进行控制芯片工作以。

    回到代码架构,举例子

    1. library ieee;
    2. use ieee.std_logic_1164.all;
    3. use ieee.std_logic_unsigned.all;
    4. use ieee.std_logic_arith.all;
    5. use ieee.std_logic_unsigned;
    6. entity tdm_clk is
    7. port (clk64m: in std_logic;
    8. clk2m:buffer std_logic);
    9. end tdm_clk;
    10. architecture rtl of tdm_clk is
    11. signal count: std_logic_vector(12 downto 0) :="0000000000000";
    12. begin
    13. PROCESS (clk64m, count)----分频模块,8192计数;
    14. begin
    15. if (clk64m'event AND clk64m='1') THEN
    16. if(count = "1111111111111") THEN
    17. count <= "0000000000000";
    18. else
    19. count <= count +1;
    20. end if ;
    21. end if;
    22. end process;
    23. clk2m <= count(4);
    24. end rtl;

    代码中count是一个12位的计数器。在每个clk64m上升沿时,计数器会增加1。当count达到"1111111111111"时,计数器会被重置为"0000000000000"。

    然后,将count的第4位赋值给clk2m。这意味着clk2m的值将等于count的第4位。由于count是一个12位计数器,因此count(4)表示count的第4位。

    根据代码中的逻辑,每当count的第4位变为1时,clk2m将变为1。因此,clk2m将以2MHz的频率生成时钟信号。这是因为clk64m的频率为64MHz,而count的计数器在每个clk64m上升沿时增加1,因此count的第4位将在每个clk64m的16个周期内变为1,从而产生2MHz的时钟信号。

  • 相关阅读:
    latex技巧
    TVS 管选型与 ESD 防护设计
    机器学习知识点总结
    昱琛航空IPO被终止:曾拟募资5亿 郭峥为大股东
    2023年中国汽车铸造模具竞争现状及行业市场规模前景分析[图]
    Autosar基础——DLT(DiagnosticLogAndTrace)
    Delphi的函数指针传递和调用
    力扣+牛客--刷题记录
    我的 Kafka 旅程 - 性能调优
    springboot+vue项目合同申报系统java
  • 原文地址:https://blog.csdn.net/qq_40715266/article/details/132811352