在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1608|回复: 7

[求助] verilog语句新手求助

[复制链接]
发表于 2021-9-7 19:52:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 xuwenwei 于 2021-9-7 19:53 编辑

最近项目要求需要写behavior model,看前辈写的verilog语句,不太理解。
logic [94:0] sr;
always_ff @(posedge CLK, negedge RSTB)
   begin
      if (!RSTB)                    sr = '0;
      else sr = {sr[93:0], STR};
    end

其中STR是给个初始的pulse,我想问上面的语句最终得到的sr[94:0]是什么波形,我的理解是CLK的上升沿采样一次,那么sr[0]是不是对STR采样,那么sr[1]对谁采样呢,结果应该就是从低到高的波形,不会是个pulse。
为什么仿真出来的波形,是pulse移位呢?纯新手求教。

发表于 2021-9-7 21:17:58 | 显示全部楼层
本帖最后由 luciano 于 2021-9-7 21:28 编辑

这是一个移位寄存器,时序逻辑电路(即使用边沿作为触发信号而不是电平)应该用<=赋值,而不是=,不然可能出问题。详细的功能是把sr的所有位都左移一位,最低位移入STR。
更详细的语法说明:
{}:花括号是拼接运算符,比如{2'b10, 3'b111}的结果是5'b101111
<=:非阻塞赋值,该赋值语句先计算语句块内部所有右边表达式的值,再将值赋给左边寄存器变量

 楼主| 发表于 2021-9-8 08:41:04 | 显示全部楼层
本帖最后由 xuwenwei 于 2021-9-8 09:41 编辑


luciano 发表于 2021-9-7 21:17
这是一个移位寄存器,时序逻辑电路(即使用边沿作为触发信号而不是电平)应该用 ...


感谢大神解答!再问一个问题,语句中output logic [9:0] CH1;..........
output logic [9:0] CH2200;
input  logic [119:0]  DATA;
latch[0]=DATA; ............
latch[94] = DATA;
assign latch_out = latch[94:0];
assign CH0 = latch_out[0];
assign CH2200 =latch_out[2200]

我想问这里 定义了CH*为10bit数据, 然后有条件的(这里没写条件)将120bit的DATA赋值给latch
  • ,我想问最后的语句中CH*赋值的latch_out[0] 是latch[0]中的前10个bit吗,然后依次CH1就是下面10个bit,然后当120个bit用完后就用CH2里面的120bit。这里是这么智能的赋值的吗?


  •  楼主| 发表于 2021-9-10 08:52:17 | 显示全部楼层


    luciano 发表于 2021-9-7 21:17
    这是一个移位寄存器,时序逻辑电路(即使用边沿作为触发信号而不是电平)应该用 ...


    大神求解答,谢谢!
    发表于 2021-9-10 14:02:57 | 显示全部楼层


    xuwenwei 发表于 2021-9-8 08:41
    感谢大神解答!再问一个问题,语句中output logic [9:0] CH1;..........
    output logic [9:0] CH2200;
    inp ...


    没试过,但大概率没有这么智能,就算有这么智能,不要这么做最好等位赋值,不然仿真结果和你预期的会不一样
     楼主| 发表于 2021-9-10 14:21:11 | 显示全部楼层


    luciano 发表于 2021-9-10 14:02
    没试过,但大概率没有这么智能,就算有这么智能,不要这么做最好等位赋值,不然仿真结果和你预期的会不一 ...


    好的 所以最好还是写成
    assign CH0 = latch_out[0][9:0],即0里面的前10个bit
    assign CH1 = latch_out[0][19:10] 即0里面的接着10个bit
    对吧
    发表于 2021-9-10 15:13:11 | 显示全部楼层
    或者用拼接操作符,assgin {CH0, CH1} = latch_out[0][19:0],和你这两句的效果是一样的
     楼主| 发表于 2021-9-10 15:54:21 | 显示全部楼层


    luciano 发表于 2021-9-10 15:13
    或者用拼接操作符,assgin {CH0, CH1} = latch_out[0][19:0],和你这两句的效果是一样的 ...


    你这种更方便,谢谢大神回复。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐 上一条 /2 下一条

    ×

    小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
    ( 京ICP备:10050787号 京公网安备:11010502037710 )

    GMT+8, 2024-4-29 02:35 , Processed in 0.027036 second(s), 6 queries , Gzip On, Redis On.

    eetop公众号 创芯大讲堂 创芯人才网
    快速回复 返回顶部 返回列表