如何用verilog来实现倒序输出?(verilog实现反转输出)

这篇具有很好参考价值的文章主要介绍了如何用verilog来实现倒序输出?(verilog实现反转输出)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

输入一个16位的信号in,如何将其从低位到高位输出(即反转顺序输出)为out?

目录

输入一个16位的信号in,如何将其从低位到高位输出(即反转顺序输出)为out?

一、野蛮方法

二、always过程语句中for循环

三、generate例化for循环

一、野蛮方法

        {}位拼接运算符用于将两个或多个信号拼接起来,表示一个整体的信号,如下:

                a = {b[5],b[4:0]}

        意思为 b的最高位b[5]和b的低五位拼接起来,组成的a为6位,相当于:

                a = {b[5],b[4],b[3],b[2],b[1],b[0]}

`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);
assign out = {in[0],in[1],in[2],in[3],in[4],in[5],in[6],in[7],in[8],in[9],in[10],in[11],in[12],in[13],in[14],in[15]};
endmodule

二、always过程语句中for循环

        always 内部用for循环,需要定义interger类型变量,否则有些仿真工具会报错。

`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);
    reg [15:0] out1;
    integer i;
    always @(in)
        begin
            for(i=0;i<=15;i=i+1)
                begin
                    out1[15-i]=in[i];
                end
        end
    assign out=out1;
endmodule

三、generate例化for循环

        for语句在always 外部,或者使用for循环例化模块,需要定义genvar变量,否则有些仿真工具会报错。文章来源地址https://www.toymoban.com/news/detail-588838.html

`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);
genvar i;
generate
    for(i=0;i<16;i=i+1)
        assign out[i]=in[15-i];
endgenerate
endmodule

到了这里,关于如何用verilog来实现倒序输出?(verilog实现反转输出)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于FPGA:运动目标检测(LCD显示+串口输出,纯Verilog工程)

          最早做了基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择),有网友反应,VGA一个大大的屏幕,做起来很不方便,并且功能过于单一。      因此,在上个工程的基础上,修改成了TFT-LCD屏幕检测,并且将检测结果通过串口输出到电脑上位机上,以便大家做

    2024年02月07日
    浏览(31)
  • 字符串倒序输出

    近期面试有这样一个问题,给定一个字符串,将其倒序输出,这种问题乍一看很好处理,但是实际在写的时候不知道怎么写了,有思路,但是没写出来。记录一下。 字符串反转实现的方式有多种,本质思想是将两端的数据进行对调,这个需要关系到二分法。 计算字符串总长

    2024年01月19日
    浏览(31)
  • 【leetcode 力扣刷题】字符串翻转合集(全部反转///部分反转)

    题目链接:344. 反转字符串 题目内容: 题目中重点强调了必须 原地修改 输入数组,即不能新建一个数组来完成字符串的反转。我们注意到: 原来下标为0的,反转后是size - 1【原来下标是size - 1的,反转后是0】; 原来下标是1的,反转后是size - 2【原来下标是size -2的,反转后

    2024年02月11日
    浏览(35)
  • K 个一组翻转链表(链表反转,固定长度反转)(困难)

    优质博文:IT-BLOG-CN 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值,而是需要实际进

    2024年01月19日
    浏览(28)
  • STM32 GPIO实验_交替输出高低电平

    1.实验目的: 使PB5和PE5交替输出高低电平。 以固定的周期让当PB5输出高电平时PE5输出低电平,反之当PB5输出低电平时PE5输出高电平。 2.头文件和声明子函数:延时函数用于提供固定的变化周期。 3.1主函数部分1:初始化PB5和PE5引脚。 3.2主函数部分2:PB5和PE5一个置高电平(熄

    2024年02月08日
    浏览(28)
  • C语言:输入学生信息(学号姓名成绩)并按成绩高低升序输出

    定义学生结构体Student(含学号、姓名、成绩)和排序函数sort,该函数使用冒泡排序法按成绩升序排序。在主函数中输入5个学生的学号、姓名和成绩,调用sort函数对学生数据排序,最后输出排序后的学生全部信息。 结构体数组的元素输入输出。 结构体作为参数传递。 冒泡排序

    2024年02月12日
    浏览(27)
  • 关于STM32Fx部分引脚不可以正常输出高低电平的解决办法(不可以正常使用)

    在一次电路版测试中,发现stm32的部分引脚不可以正常的输出高低电平,刚开始以为是板子没有焊接好所以导致的经过多次的测试,发现电路版没问题。当时就想不清楚了,后面就问学长,还有实验室的学长一起测试。刚开始我们经过测试,认为是SCL的问题,认为在某个地方

    2024年03月09日
    浏览(38)
  • Verilog实现倍频FPGA

    Verilog实现倍频FPGA FPGA(现场可编程门阵列)是一种灵活的硬件开发平台,可以用于实现各种数字电路。在FPGA中实现倍频电路是一项常见的任务,它可以将输入信号的频率提高到所需的倍数。本文将介绍如何使用Verilog语言在FPGA上实现倍频电路,并提供相应的源代码示例。 设

    2024年02月08日
    浏览(29)
  • 【FPGA/verilog -入门学习4】verilog 实现多路脉冲计数

    设计一个脉冲计数器,其功能如下 输入脉冲:4路脉冲信号,分别对每路进行脉冲检测并计数 使能信号:高电平进行计数,低电平清零计数器 计数器:在使能信号高电平期间,对脉冲信号的上升沿进行检测并递增计数值 编写测试脚本,进行仿真验证 使用上一章的一路脉冲检

    2024年02月04日
    浏览(37)
  • Verilog编写实现FPGA打两拍

    Verilog编写实现FPGA打两拍 本文将向您展示如何使用Verilog编写并实现在FPGA上打两拍的功能。打两拍是一种音乐节奏,通常用于音乐中的序列节奏,可以通过FPGA来实现。使用Verilog作为硬件描述语言,我们可以简单而有效地实现这一功能。 首先,我们需要定义一个时钟信号和计

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包