FPGA中task语法基本使用

2023-11-01

1.task定义为任务,完成的是某个具体功能。可以在initial语句和always语句中使用,不过initial语句使用较多。

2. task如何使用?

 (1)定义任务

task  任务名 (端口及数据类型声明语句);

     语句1

     语句2

       ......

      语句n

endtask

     (2)调用任务

     任务名 (端口 1,端口 2, ...  端口 n);

任务调用中的端口 1,端口 2, ...  端口 n与定义任务中的变量一一对应,实现将端口 1,端口 2, ...  端口 赋值给定义任务中的变量名,有点类似C语言的函数实参与形参。

3.需要理解的点

   *任务没有返回值

   *任务可以自己定义的仿真时间单位

   *任务可以在启动其他任务

   *任务在仿真中用的较多

4.实际应用

  产生一组串行数据

`timescale  1ns/1ns

module  tb_uart_rx();

reg             sys_clk;
reg             sys_rst_n;
reg             rx;

wire    [7:0]   po_data;
wire            po_flag;

always #10 sys_clk = ~sys_clk;

initial begin
        sys_clk    = 1'b1;
        sys_rst_n <= 1'b0;
        rx        <= 1'b1;
        #20;
        sys_rst_n <= 1'b1;
end

//模拟发送8次数据,分别为0~7
initial begin
        #200
        rx_bit(8'd0);  //任务的调用,任务名+括号中要传递进任务的参数
        rx_bit(8'd1);
        rx_bit(8'd2);
        rx_bit(8'd3);
        rx_bit(8'd4);
        rx_bit(8'd5);
        rx_bit(8'd6);
        rx_bit(8'd7);
end
//任务的定义
task rx_bit(input   [7:0]   data);
        integer i;      //定义一个变量,int i 不行。
		             
        for(i=0; i<10; i=i+1) begin  //不可用i=i++的方式
            case(i)
                0: rx <= 1'b0;   //起始位
                1: rx <= data[0];
                2: rx <= data[1];
                3: rx <= data[2];
                4: rx <= data[3];
                5: rx <= data[4];
                6: rx <= data[5];
                7: rx <= data[6];
                8: rx <= data[7];
                9: rx <= 1'b1;   //终止位
            endcase
            #(5208*20); //每发送1位数据延时5208个时钟周期
        end
endtask         //任务以endtask结束

uart_rx uart_rx_inst(
        .sys_clk    (sys_clk    ),  
        .sys_rst_n  (sys_rst_n  ),  
        .rx         (rx         ),  
                
        .po_data    (po_data    ),  
        .po_flag    (po_flag    )   
);
endmodule

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA中task语法基本使用 的相关文章

  • 各种FIFO硬件设计(FIFO概念、异步、同步、非2次幂深度FIFO)

    文章目录 一 FIFO概述 二 FIFO分类 三 FIFO重要信号与参数 3 1 信号 3 2 参数 3 2 1 data depth的确定 四 FIFO存储原理 五 同步FIFO 5 1 空满信号判断 5 2 同步FIFO源码 5 3 测
  • 【Xilinx Vivado时序分析/约束系列6】FPGA开发时序分析/约束-IO时序输入延时

    目录 源同步FPGA输入时序分析的模型 input delay约束 极限input delay 往期系列博客 源同步FPGA输入时序分析的模型 以下为源同步FPGA输入时序分析的模型的示意图 在之前的文章中介绍过 在此介绍一下各个时钟延时的
  • 数字IC手撕代码-兆易创新笔试真题

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • Verilog的奇技淫巧[更新中]

    1 Verilog常用的数据选择语句vect a b 或vect a b 转载自 MDY常用的数据选择语句Verilog明德扬论坛 Powered by Discuz vect为变量名字 a为起始位置 加号或者减号代表着升序或者降序 b是进
  • 基于单光子探测的多脉冲周期符合远距离测距

    激光测距技术通过发射主动激光信号对目标进行探测 接收由目标漫反射回来的回波信号并进行统计 处理及换算 从而得到目标的距离 速度信息 实现对目标距离信息的探测 凭借其系统简单 操作灵活 高精度等特点 被广泛运用于民用 科研及军事等各类场合 基
  • DDR的VTT有源端接和无源端接(slua886a笔记)

    DDR的VTT有源端接和无源端接 slua886a笔记 背景 对于DDR的VTT端接 一直有说法是有源端接可降低功耗 之前一直没仔细理解其中原因 现在找了些相关的资料来介绍和对比有源和无源端接 理解有源端接的优点和降低功耗的原理 主要基于读
  • HDLBits — Verilog Practice(每日一题)

    HDLBits Verilog Practice 每日一题 一 Getting Started 1 Getting Started 一 Getting Started 1 Getting Started 问题描述 Build a circu
  • SD卡读写实验(SPI模式)

    对于 SD 卡的 SPI 模式而言 采用的 SPI 的通信模式为模式 3 即 CPOL 1 CPHA 1 在 SD 卡 2 0 版 本协议中 SPI CLK 时钟频率可达 50Mhz SD 卡的 SPI 模式 只用到了 SDIO D3 SP
  • FPGA的基本设计流程

    FPGA开发主要包括系统设计 设计输入 功能仿真 综合优化 综合后仿真 实现与布局布线 时序方针与验证 板级方针与验证 芯片编程与调试等9个部分 如下图所示 1 电路设计 在系统设计之前 首先要进行的是方案论证 系统设计和FPGA芯片选择等
  • FPGA project : water_led

    module water led parameter MAX CNT 25 d25 000 000 input wire sys clk input wire sys rst n output wire 03 00 led signal r
  • 上拉电阻和下拉电阻

    一 定义 上拉电阻 将一个不确定的信号 通过一个电阻与电源VCC相连 固定在高电平 下拉电阻 将一个不确定的信号 通过一个电阻与地GND相连 固定在低电平 二 作用 提高输出信号驱动能力 确定输入信号电平 防干扰 限流 阻抗匹配 抗回波干扰
  • FIFO读写控制

    如果在两个模块之间传输数据 两个模块之间的处理速率不同 会导致采集数据的遗漏或错误 在他们之间加一个数据缓存器 所有数据先经过缓存器缓存 再输入数据接送模块 创建两个模块 一个 作为发送模块 一个作为接受模块 发送模块检测到 fifo为空开
  • 【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释

    目录 DDR3读写实验 实验框图 时钟模块 DDR3读写及LED指示模块 MIG IP核 用户接口解释
  • 握手2倍速率进,一倍速率出[verilog]

    module two to one parameter WORD LEN 33 input clk input arst input 2 WORD LEN 1 0 i din input i din valid output o din r
  • 八、RISC-V SoC外设——GPIO接口 代码讲解

    前几篇博文中注释了RISC V的内核CPU部分 从这篇开始来介绍RISC V SoC的外设部分 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 目录 0 RISC V SoC注解系列文章目录 1 结构
  • FPGA硬件工程师Verilog面试题(基础篇二)

    作者简介 大家好我是 嵌入式基地 是一名嵌入式工程师 希望一起努力 一起进步 个人主页 嵌入式基地 系列专栏 FPGA Verilog 习题专栏 微信公众号 嵌入式基地 FPGA硬件工程师Verilog面试题 二 习题一 多功能数据处理器
  • 关于xilinx BRAM IP的延迟以及流程

    关于RAM IP的延迟 1 选择了output registers 可以在RAM输出端口添加register 也可以在core的输出添加 在primitives添加 降低clock to out到primitive的延迟 在core添加re
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • 蓝桥杯真题:迷宫

    目录 题目描述 运行限制 dfs bfs 结果 题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 下图给出了一个迷宫的平面图 其中标记为 11 的为障碍 标记为 00 的为可以通行的地方 010000 000

随机推荐

  • C++实现【获取鼠标位置】以及控制鼠标【打开窗口并点击】

    获取鼠标位置的函数源代码来自 C 认知系列 实时获取鼠标坐标 c 获取鼠标坐标 Zalamp的博客 CSDN博客 鼠标点击操作代码来自 C 控制鼠标移动到指定位置并且左键点击 c 鼠标移动 蜚语77的博客 CSDN博客 在特定程序中实现鼠标
  • Python 合并同一文件夹下所有Excel_xlsx文件

    转载 How to Consolidate Multiple Excel Workbooks With Python 想要将同一文件夹下xlsx文件合并为一个文件 代码 代码来源 仅供学习 import pandas as pd impor
  • Windows域认证(Kerberos认证)图解

    图文经过梳理与绘制已较为详细 希望能帮助大家更清晰 直观地了解Kerberos的认证过程 相关名词 DC 域控制器 KDC 密钥分发中心 AD 账户数据库 AS 身份验证服务 TGS 票据发放服务 TGT 认证票据 Ticket 票据 Ma
  • VOS论文阅读:Fast Video Object Segmentation using the Global Context Module(2020 ECCV)

    Fast Video Object Segmentation using the Global Context Module 2020 ECCV Contribution Method Global Context Module Conte
  • redis 数据类型之字符串(string) 详细介绍

    字符串 string 键是Redis最基本的键值对类型 这种类型的键值对会在数据库中把单独的一个键和单独的一个值关联起来 被关联的键和值既可以是普通的文字数据 也可以是图片 视频 音频 压缩文件等更为复杂的二进制数据 图2 1展示了数据库视
  • openwrt 完美安装 tcpdump

    直接使用 opk install tcpdump 报下面的错 Collected errors check data file clashes Package libpcap1 wants to install file usr lib l
  • Makeflow用户手册 一

    Makeflow用户手册 概述 Makeflow是用于大规模分布式计算的工作流引擎 它接受要执行的大量工作的规范 并尽可能在远程计算机上并行运行 此外 Makeflow是容错的 因此您可以使用它来协调非常大的任务 这些任务可能在出现故障时运
  • (4)各个属性角色分析显示-4

    将折线图 数据集 散点图集合在一个html文件中 1 将折线图 数据集 散点图设置为函数a b c 2 再调用page add 函数 将三个图片组合在一起 3 运行page render x html 函数 将该页面命名 打开html文件
  • Java线程中处理运行时异常(UncaughtExceptionHandler)

    线程在执行单元中不允许抛出checked异常 而且线程运行在自己的上下文中 派生它的线程无法直接获得它运行中出现的异常信息 对此 Java为我们提供了UncaughtExceptionHandler接口 当线程在运行过程中出现异常时 会回调
  • ElasticSearch多字段查询best_fields、most_fields和cross_fields理解

    基于elasticsearch7 6 1 和 kibana7 6 1 本文通过案例进行讲解 希望读者耐心阅读 一 介绍 字段中心查询式 就是以字段为中心 代表就是 best fields和most fields 把所有的字段全都散列 然后从
  • 详解曼哈顿距离&欧式距离&切比雪夫距离

    详解曼哈顿 欧式距离 切比雪夫距离 曼哈顿距离 基本概念 出租车几何或曼哈顿距离 Manhattan Distance 是由十九世纪的赫尔曼 闵可夫斯基所创词汇 是种使用在几何度量空间的几何学用语 用以标明两个点在标准坐标系上的绝对轴距总和
  • 基于32单片机的16通道ADC的数据采集

    基于32单片机的16通道ADC的数据采集 这个部分的内容 是作为外部模拟量部分的采集工作 按照任务要求 所设计的方案 需要完成以下指标 ADC必须能采集16通道的模拟量 ADC的分辨率是16bit 采样率不小于20khz 由此分析可以得出
  • 请使用正确的入口登录面板—解决方案

    错误信息提示 解决方案 一 找回安全登录地址 宝塔登录地址 http 你的服务器ip 8888 但是这种格式是不安全的 目前新安装的宝塔面板默认都开启了安全目录登录 所以如果使用这种不带有8位字符随机码的登录地址就会提示 请使用正确的入口登
  • 【AI】《动手学-深度学习-PyTorch版》笔记(二十一):目标检测

    AI学习目录汇总 1 简述 通过前面的学习 已经了解了图像分类模型的原理及实现 图像分类是假定图像中只有一个目标 算法上是对整个图像做的分类 下面我们来学习 目标检测 即从一张图像中找出需要的目标 并标记出位置 2 边界框 边界框 boun
  • xctf攻防世界—Web新手练习区robots单题思路

    xctf攻防世界 Web新手练习区robots单题思路 邱邱邱自强 前言 随着互联网的发展 互联网界的行为也越来越被重视 那么国际互联网界通行的道德规范是什么呢 它就是Robots协议 一 Robots协议是什么 robots协议也叫rob
  • 点击Path环境变量编辑不展开的问题

    分析 将 MYSQL HOME bin移动到 JAVA HOME bin的上面 点击确定 再次点击Path环境变量就会出现编辑不展开的问题 如图所示 分析原因 因为我把两个 MYSQL HOME bin和 JAVA HOME bin一起放在
  • zip、unzip命令使用

    1 zip压缩命令 1 压缩文件 zip test test txt 将text txt文件压缩到test zip文件中 2 压缩文件夹 r zip r attack zip attack 将当前路径下attack文件夹中的文件进行压缩 压
  • assert在debug 和 release版本中的区别

    转自 https blog csdn net panfengsoftware article details 8910468 debug版本与release的不同点 debug版本中含有调试信息 不会对程序进行优化 assert相应的宏会被
  • python-一些坑点

    一些python使用中遇到的坑点 记录一下 同样的问题也可能只是对当前我的环境下有作用 AttributeError module urllib has no attribute splittype 使用urllib中的一些工具时 提示这个
  • FPGA中task语法基本使用

    1 task定义为任务 完成的是某个具体功能 可以在initial语句和always语句中使用 不过initial语句使用较多 2 task如何使用 1 定义任务 task 任务名 端口及数据类型声明语句 语句1 语句2 语句n endta