当前位置: 首页 > news >正文

【芯片设计- RTL 数字逻辑设计入门 15 -- 函数实现数据大小端转换】

文章目录

    • 函数实现数据大小端转换
      • 函数语法
      • 函数使用的规则
      • Verilog and Testbench
      • 综合图
      • VCS 仿真波形

函数实现数据大小端转换

在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。

请用函数实现一个4bit数据大小端转换的功能。实现对两个不同的输入分别转换并输出。
程序的接口信号图如下:
在这里插入图片描述
使用Verilog HDL实现以上功能并编写testbench验证。

输入描述

  • clk:系统时钟
  • rst_n:异步复位信号,低电平有效
  • a,b:4bit位宽的无符号数

输出描述

  • c,d:4bit位宽的无符号数

函数语法

function [range] function_id; 
   input_declaration 
   other_declarations 
   procedural_statement 
endfunction

中文版:

function <返回值的类型或范围>函数名;  
	<端口说明语句>
	<变量类型说明语句>
	begin
		<语句>
	end
endfunction
  • function 语句标志着函数定义结构的开始;
  • <返回值的类型或范围>: 这一项为可选项,如果缺失,则返回值为一位寄存器类型数据,函数名就是返回值,默认是reg类型;
  • input_declaration 用于对函数各个输入端口的位宽和类型进行说明,在函数定义中至少要有一个输入端口;
  • endfunction为函数结构体结束标志。

函数使用的规则

  • 函数定义不能包含有任何的时间控制语句,即任何用#、@、wait来标识的语句。

  • 函数不能调用“task”。

  • 定义函数时至少要有一个输入参数。

  • 在函数的定义中必须有一条赋值语句给函数中与函数名同名、位宽相同的内部寄存器赋值。

  • verilog中的function只能用于组合逻辑

  • 函数中只有组合逻辑,所以函数是可以综合的。

Verilog and Testbench

在这里插入图片描述

综合图

在这里插入图片描述

VCS 仿真波形

在这里插入图片描述

相关文章:

  • PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证
  • 如何使用六图一表七种武器
  • 网络安全的今年:量子、生成人工智能以及 LLM 和密码
  • 【Android-Gradle】多模块开发中,定义额外属性(全局变量),穿梭在不同的Gradle文件中(kotlin脚本版)
  • 使用二分查找优化时间复杂度
  • Transformer的PyTorch实现之若干问题探讨(一)
  • ubuntu下如何查看显卡及显卡驱动
  • php 如何判断是否上传了文件、图片
  • CGAL::2D Arrangements-5
  • Chrome 沙箱逃逸 -- Plaid CTF 2020 mojo
  • APIfox自动化编排场景(二)
  • Codeforces Round 923 (Div. 3) C. Choose the Different Ones(Java)
  • 【MATLAB】GA_BP神经网络回归预测算法
  • 基于51 单片机的交通灯系统 源码+仿真+ppt
  • LoRA:语言模型微调的计算资源优化策略
  • 树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务
  • Java玩转《啊哈算法》纸牌游戏之小猫钓鱼
  • CSP-动态规划-最长公共子序列(LCS)
  • HiveSQL——条件判断语句嵌套windows子句的应用
  • C# CAD交互界面-自定义面板集(四)
  • 同日哑火丢冠,双骄的下山路,手牵手一起走
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • 擦亮“世界美食之都”金字招牌,淮安的努力不止于餐桌
  • 2025年度中国青年五四奖章暨新时代青年先锋奖评选揭晓
  • 农业农村部:把住能繁母猪存栏量“总开关”,引导养殖场户优化母猪存栏结构、合理控制产能
  • 非法收受财物逾1648万,湖南原副厅级干部康月林一审被判十年半