亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> VHDL

善用VHDL记录类型构建整洁可复用FIFO接口

VHDL中记录提供强大方式精简设计,堪比C语言结构体。将相关信号分组为单一类型,能大幅减少代码重复、提升可读性、简化跨多实体的端口映射。

记录在处理大型反复接口时大放异彩——如连接片外存储器或FIFO——同组控制与数据信号反复出现。在包中一次定义记录类型并到处复用,保持实体接口整洁,便于后续修改。

以下示例演示如何在专用包(example_record_pkg.vhd)创建两记录类型,建模FIFO输入输出信号。单一记录信号代表FIFO所有输入,另一代表所有输出。

核心收获:

  1. 记录简化VHDL实体声明与端口映射。
  2. 可容纳不同类型元素——std_logic、integer、std_logic_vector等。
  3. 记录类比C结构体,为许多工程师提供熟悉范式。
  4. 共享记录类型应置于单一包以保一致性。
  5. 记录信号可用常量初始化获可预测上电值。
  6. 记录数组支持结构化数据处理,如FIFO配置表。

下方为包定义,后接使用记录类型管理FIFO读写逻辑的示例实体。代码全符合IEEE 1076-2008标准。

 library ieee; use ieee.std_logic_1164.all; package example_record_pkg is -- FIFO输出。 type t_FROM_FIFO is record wr_full : std_logic; -- FIFO满标志 rd_empty : std_logic; -- FIFO空标志 rd_dv : std_logic; rd_data : std_logic_vector(7 downto 0); end record t_FROM_FIFO; -- FIFO输入。 type t_TO_FIFO is record wr_en : std_logic; wr_data : std_logic_vector(7 downto 0); rd_en : std_logic; end record t_TO_FIFO; constant c_FROM_FIFO_INIT : t_FROM_FIFO := (wr_full => '0', rd_empty => '1', rd_dv => '0', rd_data => (others => '0')); constant c_TO_FIFO_INIT : t_TO_FIFO := (wr_en => '0', wr_data => (others => '0'), rd_en => '0'); end package example_record_pkg; 
 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.example_record_pkg.all; -- 使用包! entity example_record is port ( i_clk : in std_logic; i_fifo : in t_FROM_FIFO; o_fifo : out t_TO_FIFO := c_TO_FIFO_INIT -- 初始化输出记录 ); end example_record; architecture behave of example_record is signal r_WR_DATA : unsigned(7 downto 0) := (others => '0'); begin -- 处理FIFO写入 p_FIFO_WR : process (i_clk) is begin if rising_edge(i_clk) then if i_fifo.wr_full = '0' then o_fifo.wr_en <= '1'; o_fifo.wr_data <= std_logic_vector(r_WR_DATA + 1); end if; end if; end process p_FIFO_WR; -- 处理FIFO读取 p_FIFO_RD : process (i_clk) is begin if rising_edge(i_clk) then if i_fifo.rd_empty = '0' then o_fifo.rd_en <= '1'; end if; end if; end process p_FIFO_RD; end behave; 

VHDL

  1. 黑胶唱片LP制作的艺术与工艺
  2. AC 分析配置:曲线类型、计算点与频率扫描设置
  3. VHDL入门:构建你的第一个与门
  4. VHDL类型转换全攻略:Numeric_Std与Std_Logic_Arith包详解
  5. VHDL过程示例:标准逻辑向量自增
  6. 掌握VHDL有符号与无符号类型:实战洞察
  7. VHDL变量详解:实用示例与可靠设计规则
  8. 精通PSL形式化验证VHDL模块:从理论到实战
  9. VHDL 字符串列表创建:最佳实践与示例
  10. 精通 VHDL Generate 语句:轻松构建可复用去抖动器
  11. 优雅结束 VHDL 测试平台仿真
  12. VHDL 实现 PWM 控制器:设计、仿真与 FPGA 演示