微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 下面这段VHDL代码什么意思,本人小白,谢谢详解

下面这段VHDL代码什么意思,本人小白,谢谢详解

时间:10-02 整理:3721RD 点击:
spi_divider : process (rst, clk_in)
    begin
    if rst = '1' then
      clk_cnt <= 0;
      clk_en <= '0';
      spi_clk_int <= '1';
    elsif falling_edge (clk_in) then
      if clk_cnt = ((SYS_FREQ / SPI_FREQ) - 2) or
         clk_cnt = ((SYS_FREQ / SPI_FREQ) - 3) then
        clk_cnt <= clk_cnt + 1;
        clk_en <= '0';
        if tx_enable = '1' or rx_enable = '1' then
          spi_clk_int <= '0';
        else
          spi_clk_int <= '1';
        end if;
      elsif clk_cnt = ((SYS_FREQ / SPI_FREQ) - 1) then
        clk_cnt <= 0;
        clk_en <= '1';
        spi_clk_int <= '1';
      else
        clk_cnt <= clk_cnt + 1;
        clk_en <= '0';
        spi_clk_int <= '1';
      end if;
    end if;
  end process;

从代码上看,给你提供一些线索吧
1、该段断码应该是一个SPI接口的时钟分频器或者SPI接口的时钟产生器
2、SYS_FREQ 和 SPI_FREQ应该在代码的前面有parameter参数定义,即这两个参数的定义值
根据实际的参数定义可以自己画一下时序图,比如rst复位信号后,各个信号的值,复位完成后,根据参数定义算出相应的if else 判断条件和执行语句,应该差不多就可以理解了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top