首页 > 其他分享 >always和assign的物理含义

always和assign的物理含义

时间:2024-03-29 23:12:16浏览次数:27  
标签:逻辑 级联 复位 always 含义 begin assign

模型功能

  • always实现时序逻辑
  • assign实现组合逻辑
  • 两者共同构成数字系统

模型框图

reg  r_A;
wire w_A;
always@(posedge clk)
begin
  if(!i_rst_n)
  begin
    r_A <= 1'b0;
  end 
  else 
  begin
    r_A <= ~r_A;
  end 
end
assign w_A = r_A;

实现步骤

  1. always的电路描述
  • always@(posedge clk)实现触发器FF(也可以作为锁存器,但是FPGA内很少见)
    • 触发器的复位包括三种:同步复位、异步复位、时钟使能(本人按照作用进行划分,非传统复位)
      • 同步复位不需要将复位加入到敏感列表
      • 异步复位则需要加入
      • 时钟使能则是需要将值进行保持
    • 之所以将前面三种模式联合,是因为这三种信号共同组成了control sets
    • 对于FPGA来说,相近的逻辑使用相同的control sets可以提高资源利用率
    • 所以always描述应当尽可能保持一致,以降低资源浪费
  • always@(*)实现的是组合逻辑,一般用于希望使用case的组合逻辑
  1. assign的简单使用
  • 将wire信号和其他信号关联,实现复杂的线逻辑
  • assign形成的硬件包含了所有的组合逻辑
    • 高低电平转化
    • DUT逻辑
    • 比较器
  1. always和generate的综合使用
  • always也可以在generate内形成级联逻辑
  • 具体的用法可以见前一章的reg级联中的示例
  • 本章需要解释的是always级联后的硬件意义
    • always级联时,依旧遵循module类似的原则
      • 相同位宽进行复制、不同位宽进行补位
    • 其底层的硬件逻辑是先构建一定数量的FF
    • 然后按照原则将所有的端口进行级联
  • 最终,该级联会形成一个可以调整的逻辑组,用于实现一些复杂的逻辑
parameter STR = "hello";
reg [7:0] r_string [0:9-1];
generate genvar i;
for(i = 0; i < 9; i = i + 1)
begin: FOR_9
  always@(posedge clk)
  begin
       r_string[i] <= STR[8*(i+1)-1:8*i];
  end 
end 
endgenerate
  • 上图是一个简单的将字符串缓存到二维变量的例子
  • 如果加入一些判断条件,就可以进行字符串的遍历
  • 更加重要的时,for里面可以在进行for,实现快速的bit位寻找
  • 比如找出128'h00010023000340中的最高位
  • 使用for可以得到极其简易的代码,且方便修改

最终效果

调用接口

标签:逻辑,级联,复位,always,含义,begin,assign
From: https://www.cnblogs.com/electricdream/p/18104765

相关文章

  • bootstrap含义
    维基百科解释bootstrap(复数bootstraps)Aloop(leatherorothermaterial)sewnatthesideortoprearofaboottohelpinpullingthebooton.(figuratively)Ameansofadvancingoneselforaccomplishingsomethingwithoutaid.Heusedhisbusinessexpe......
  • 故障转移群集(Failover Cluster Instances)和AlwaysOn是SQL Server中两种不同的高可用性
    故障转移群集(FailoverClusterInstances)和AlwaysOn是SQLServer中两种不同的高可用性解决方案。它们在实现高可用性的方式上有一些显著的区别:故障转移群集(FailoverClusterInstances):故障转移群集是一种基于WindowsServer故障转移群集技术的解决方案,它使用共享存储并在主......
  • 在Flink 1.11中,assignTimestampsAndWatermarks方法已经被新的方法assignTimestamps和a
    在Flink1.11中,assignTimestampsAndWatermarks方法已经被新的方法assignTimestamps和assignWatermarks所替代。这是为了更好地将时间戳和水位线的定义分离开来以下是使用新API的示例代码:importorg.apache.flink.api.common.eventtime.WatermarkStrategy;importorg.apache.fli......
  • SQL Server高可用性——AlwaysOn搭建
    端口13513713944550221433要开(不管他防火墙开没开)!!!!!ip规划好!!!!hostname记得提前改好!!!一.搭建域(win2008只要选dns就行,win2012还要选AD域服务)安装服务如果不行,拷贝iso上去解压,选定C:\iso\sources\sxs路径即可1.开始菜单-->管理工具-->服务器管理器,添加角色2.下一步3.......
  • Mysql中备份数据文件中/*!*/的含义
    1.问题在备份数据库时,我们发现生成的备份文件中,存在这样一系列代码:/*!40101SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT*/;/*!40101SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS*/;/*!40101SET@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTIO......
  • 常用sql语法以及含义
    select*fromuserwheresubstr(user.no,1,4)!=‘2024’;substr(obj,start,length):obj指定是哪个字段;start:指定从第几位开始(注意不能为0);length表示长度。上述sql的意思是从第一个字符开始截取no字段,截取4位。添加字段,删除字段,修改字段类型alerttableuseraddusername......
  • Android视角看鸿蒙第七课(module.json5中的各字段含义之abilities)
    Android视角看鸿蒙第七课(module.json5中的各字段含义之abilities)导读今天一起来了解module.json5中的最后一个字段,也是最复杂的字段abilities官方文档Indicatesallabilitiesinthecurrentmodule.Thevalueisanarrayofobjects,eachofwhichrepresentsan......
  • Uncaught SyntaxError: Invalid destructuring assignment target
    UncaughtSyntaxError:Invaliddestructuringassignmenttarget 这个问题是由于一个二维数组中,一个应该是逗号的地方,放了一个],废了几个小时才找到问题,真的是无语了.模拟一下案情:正确的是这样的:vararray=[[1,2,3],[4,5,6],[7,8,9]]却错误的变成了这样:vararray=[[......
  • 数据结构之BTree、B+Tree的含义及区别
    原文链接:https://blog.csdn.net/weixin_43407520/article/details/1142404381.引言前面学习索引时,了解到MySQL索引的数据类型有B+Tree索引和哈希索引,本文将详细介绍一下BTree和B+Tree的含义和他们的区别。2.BTree2.1概念B树是一种自平衡树数据结构,它维护有序数据并允许以对数时......
  • 共现网珞的参数含义
    Degree(度)定义:度是网络中一个节点的基本特性,表示直接连接到该节点的边的数量。在无向图中,一个边连接两个节点,因此每个边为节点增加一个度。在有向图中,度被分为入度和出度,分别计算指向节点和从节点出发的边的数量。应用:度量了节点的直接连通性。一个高度的节点通常表示该节点......