Verilog移位寄存器

HDLBits链接


前言

今天更新一节内容,该小节题目不多,共三道,但技巧性挺强。


题库

题目描述1:各单元的下一状态是此时当前单元相邻两位的异或。

在这个电路中,创建一个512单元系统(q(511:0)),并在每个时钟周期中前进一个时间步长。加载(load)表明系统的状态应该加载data[511:0]至q中,假设边界(q[0]和q[512])都为零。

Solution1:

module top_module(input clk,input load,input [511:0] data,output [511:0] q ); always @(posedge clk)beginif(load)beginq <= data;endelse beginq <= {1'b0,q[511:1]}^{q[510:0],1'b0};endendendmodule

题目描述2:

与题目一类似,状态转移条件发生变化,如下图所示:

Solution2:

module top_module(input clk,input load,input [511:0] data,output [511:0] q
); always @(posedge clk)beginif(load)beginq <= data;endelse begin q <= (~{1'b0,q[511:1]} & q) | (q & ~{q[510:0],1'b0}) | {~{1'b0,q[511:1]} & {q[510:0],1'b0}} | {~q & {q[510:0],1'b0}};endendendmodule

tips:进行卡诺图化简后可看懂q状态转移的含义。

题目描述3:

一个中心点周围有8个邻居,如果周围的邻居中1的数目为0-1个,那么中心点变为0;如果周围邻居中1的数目为2个,那么中心点状态不变;如果周围邻居中1的数目为3个,中心点变为1;如果周围邻居中1的数目大于3个,中心点变为0。

我们可以将周围的8个邻居的值都加起来来判断周围邻居中1的个数,值得注意的是,这里我们在for中使用了阻塞赋值,因需要当前拍(本周期)得到结果在当前拍(本周期)就去判断

建议大家做该题的时候花一个16*16的方阵,分析边界条件,达到事半功倍的效果。

生命游戏之父约翰·康威因感染新冠于2020年4月11日去世,享年83岁,在此表示哀悼。

Solution3:

module top_module(input clk,input load,input [255:0] data,output [255:0] q );reg [3:0] count;integer i;always @(posedge clk)beginif(load)beginq <= data;endelse beginfor(i=0;i<256;i++)beginif(i == 0)begincount = q[255] + q[240] + q[241] + q[15] + q[1] + q[31] + q[16] + q[17];endelse if(i == 15)begincount = q[254] + q[255] + q[240] + q[14] + q[0] + q[30] + q[31] + q[16];endelse if(i == 240)begincount = q[239] + q[224] + q[225] + q[255] + q[241] + q[15] + q[0] + q[1];endelse if(i == 255)begincount = q[238] + q[239] + q[224] + q[254] + q[240] + q[15] + q[0] + q[14];endelse if( i>0 && i<15)begincount = q[239+i]+q[240+i]+q[241+i]+q[i-1]+q[i+1]+q[i+15]+q[i+16]+q[i+17];endelse if(i>240 && i<255)begincount = q[i-17]+q[i-16]+q[i-15]+q[i-1]+q[i+1]+q[i-239]+q[i-240]+q[i-241];endelse if( i%16 == 0)begincount = q[i-1]+q[i-16]+q[i-15]+q[i+15]+q[i+1]+q[i+31]+q[i+16]+q[i+17];endelse if(i % 16 == 15)begincount = q[i-17]+q[i-16]+q[i-31]+q[i-1]+q[i-15]+q[i+15]+q[i+16]+q[i+1];endelse begincount = q[i-17]+q[i-16]+q[i-15]+q[i-1]+q[i+1]+q[i+15]+q[i+16]+q[i+17];endcase(count)4'd2:q[i] <= q[i];4'd3:q[i] <= 1'b1;default:q[i] <= 1'b0;endcaseendendendendmodule

小结

本次练习主要难在第三题中的阻塞赋值,因为我们需在当前周期内算出count并对当前算出的count值进行判断,需用阻塞赋值。

希望自己以后遇到问题能够慢慢划分解决,徐图缓进

HDLBits答案(13)_Verilog移位寄存器附加题相关推荐

  1. HDLBits答案(12)_Verilog移位寄存器

    Verilog移位寄存器 HDLBits链接 前言 今天更新一节寄存器相关内容,其中涉及CRC校验的内容是用线性反馈移位寄存器搭建而成的. 题库 题目描述1: 构建一个4bit的移位寄存器(右移),含 ...

  2. HDLBits答案(18)_Verilog有限状态机(5)

    Verilog有限状态机(5) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 题目描述1: 第一道题目比较容易,题目中的in信号包含了一个起始位(0),8个数据位和一个停止位(1), ...

  3. HDLBits答案(16)_Verilog有限状态机(3)

    Verilog有限状态机(3) HDLBits链接 前言 今天继续更新状态机小节的习题,本章主要编写Lemmings Game部分. 题库 题目描述10: Game Lemmings1:有个小人左右走 ...

  4. HDLBits答案(21)_Verilog有限状态机(8)

    Verilog有限状态机(8) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 Q2a:FSM 正宗的FSM题,没啥说的,看图写代码. Solution: module top_mod ...

  5. HDLBits答案(20)_Verilog有限状态机(7)

    Verilog有限状态机(7) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 Q3a:FSM 题目里说当s为0时,进入B状态,然后会检查w的值,如果在接下来的三个周期中w值恰好有两个 ...

  6. HDLBits答案(19)_Verilog有限状态机(6)

    Verilog有限状态机(6) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 Fsm hdlc 同步帧检测涉及对数据的连续位流进行解码,以寻找指示帧(数据包)开始和结束的位模式. 6 ...

  7. HDLBits答案(17)_Verilog有限状态机(4)

    Verilog有限状态机(4) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 题目描述1: One-hot FSM 独热编码,根据状态转移图输出下一状态与结果. Solution1: ...

  8. HDLBits答案(15)_Verilog有限状态机(2)

    Verilog有限状态机(2) HDLBits链接 前言 继续更新状态机小节的习题. 题库 题目描述6: Solution6: module top_module(input in,input [3: ...

  9. HDLBits答案(14)_Verilog有限状态机(1)

    Verilog有限状态机(1) HDLBits链接 前言 今天来到了重要的部分:状态机.对该部分内容,可能不会一次更新一个小节:一方面是题目难度,另一方面是代码量过大:所以该节会分批更新,大家见谅. ...

最新文章

  1. RxJava操作符在android中的使用场景详解(一)
  2. go:系统参数or函数--未完
  3. JS-面向对象-函数的使用场景---作为其他变量的值 / 作为对象的属性值 / 作为其他函数的参数 / 作为其他函数的返回值 / 作为构造函数(定义对象)
  4. 基于cat12搞定VBM的ROI分析——vertex水平和ROI水平的双样本T检验
  5. 360导航源码php,51zxw 仿360网址导航源码
  6. EXCEL MATCH函数
  7. 2021-07-02软件构造学习中遇到的问题
  8. 图片转excel怎么弄?简单实用的方法
  9. 一千万的股票能一天卖出吗
  10. Silverlight 教程第二部分:使用布局管理 (木野狐译) 1
  11. 【MySQL】MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明
  12. Ubuntu之[福昕pdf安装与卸载]
  13. mysql groupy by多个字段_mysql group by 实现对多个字段进行分组
  14. endnote导出格式下载地址
  15. 12法则10个心理效应
  16. 批量爬QQ用户信息,利用QQ查询功能进行获取QQ用户信息
  17. 从DQN到Double DQN和Dueling DQN——pytorch实操
  18. ubuntu搭建一个简单的http服务器
  19. 计算机用老毛桃u盘备份系统,使用U盘备份系统
  20. bzoj5042: LWD的分科岛 两种做法

热门文章

  1. Method 'GET_ENTITYSET' not implemented in data provider class - correct case
  2. how is batch operation handled in backend
  3. 为什么你们的Note.js 里面没有sap.ui.core.Control.extend()这样的代码,但是runtime有自动生成有
  4. SAP Success factor自定义launchpad
  5. SAP云平台开发权威指南的目录
  6. 推荐一个以动画效果显示github提交记录的黑科技工具:Gource
  7. 让SAP云平台上的Web应用使用destination服务
  8. 丹东御空服务器维修,【正式服】3月14日例行更新维护公告
  9. Java入门算法(递归篇)丨蓄力计划
  10. mysql mask from v2_MySQLDMB监控备份系统更新至v2.2