「Verilog学习笔记」位拆分与运算

这篇具有很好参考价值的文章主要介绍了「Verilog学习笔记」位拆分与运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

「Verilog学习笔记」位拆分与运算,Verilog学习笔记,Verilog

「Verilog学习笔记」位拆分与运算,Verilog学习笔记,Verilog

1、寄存器的位是可以分开单独运算的,并不是一个输入就一定是一个数据,在很多情况下,一个输入既包括数据又包括地址等其他有效信息

2、需要考虑数据锁存的问题,一定要在sel为0的时候进行锁存,只有此时的写入才是有效的(validout的下降沿写入有效),同时存在多种情况且没有优先级问题,建议使用case语句

「Verilog学习笔记」位拆分与运算,Verilog学习笔记,Verilog

`timescale 1ns/1ns

module data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,

output reg [4:0] out,
output reg validout
);
//*************code***********//
    reg [15:0] data_lock ; 

    always @ (posedge clk or negedge rst) begin 
        if (~rst) 
            data_lock <= 0 ; 
        else if (!sel) 
            data_lock <= d ; 
    end 

    always @ (posedge clk or negedge rst) begin 
        if (~rst) begin 
            out <= 1'b0 ; 
            validout <= 0 ; 
        end 
        else begin 
            case (sel) 
                0 : begin 
                    out <= 1'b0 ; 
                    validout <= 0 ; 
                end 
                1 : begin 
                    out <= data_lock[3:0] + data_lock[7:4] ; 
                    validout <= 1 ; 
                end 
                2 : begin 
                    out <= data_lock[3:0] + data_lock[11:8] ; 
                    validout <= 1 ; 
                end 
                3 : begin 
                    out <= data_lock[3:0] + data_lock[15:12] ;
                    validout <= 1 ; 
                end 
            endcase 
        end 
    end  

//*************code***********//
endmodule

 文章来源地址https://www.toymoban.com/news/detail-745507.html

到了这里,关于「Verilog学习笔记」位拆分与运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Verilog学习笔记(5):Verilog高级程序设计

    串行加法器: 一个四位串行加法器由4个全加器构成。全加器是串行加法器的子模块,而全加器是由基本的逻辑门构成,这些基本的逻辑门就是所说的叶子模块。这个设计中运用叶子模块(基本逻辑门)搭建成子模块(全加器),再用子模块搭建成所需要的电路(串行加法器

    2024年02月11日
    浏览(43)
  • 「Verilog学习笔记」根据RTL图编写Verilog程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 观察题目给出的RTL图,主要的器件是两个D触发器,一个与门。D触发器含有异步复位信号,且为低电平有效。data_in输入到D触发器,D触发器的输出Q是前一时刻的data_in,即data_in打一

    2024年03月24日
    浏览(39)
  • Verilog 学习笔记

    模块 • Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间。每个模块实现特定的功能。模块是可以进行层次嵌套的。正因为如此,才可以将大型的数字电路设计分割成不同的小模块来实现特定的功能,最后通过顶层模块调用子模块来实现整体功

    2024年02月09日
    浏览(43)
  • verilog入门学习笔记

    第一部分 (必填) module 模块名 ([端口列表]); [端口信号声明;] [参数声明;] 1、模块名是指电路的名字,由用户指定, 最好与文件名一致 2、端口列表是指电路的输入/输出信号名称列表,信号名由用户指定,各名称间用逗号隔开。 3、端口信号声明是要说明端口信号的

    2024年02月07日
    浏览(37)
  • Verilog学习笔记(3):Verilog数字逻辑电路设计方法

    例:用Verilog设计模256(8bits)计数器 (a)可综合程序描述方式 (b)常见的错误描述方式 同时Verilog的电路描述方式具有多样性,这也决定了对于电路设计的多样性。 例:用Verilog设计数字多路选择器 (a)采用真值表形式的代码 (b)采用逻辑表达式形式的代码 (c)采用结

    2023年04月08日
    浏览(118)
  • 运算符(个人学习笔记黑马学习)

     加减乘除 取模   自增自减     逻辑非! 逻辑与  逻辑或|| 

    2024年02月11日
    浏览(36)
  • 「Verilog学习笔记」时钟分频(偶数)

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

    2024年02月03日
    浏览(40)
  • 「Verilog学习笔记」信号发生器

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网         方波的实现,较为简单,只需要设置一个计数器,使输出保持10个时钟为0,跳变为20,再保持10个时钟。依次循环。可以按照如下的过程实现:cnt每个时钟加一,当cnt=

    2024年02月05日
    浏览(41)
  • Verilog 学习笔记(一)模块例化

        1.单个模块的例化 verilog中模块的例化有两种方式,一种是基于端口位置来例化模块,另一种则是根据端口名称来例化。首先介绍第一种基于端口位置来例化。在此之前,我们先给出一个简单的模块如下:  上图中的mod_a模块声明如下: module mod_a ( output, output, input, input,

    2024年02月13日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包