首页 > 其他分享 >4-bit shift register

4-bit shift register

时间:2024-04-11 15:11:30浏览次数:29  
标签:load ena shift register areset input bit

Build a 4-bit shift register (right shift), with asynchronous reset, synchronous load, and enable.

areset: Resets shift register to zero.
load: Loads shift register with data[3:0] instead of shifting.
ena: Shift right (q[3] becomes zero, q[0] is shifted out and disappears).
q: The contents of the shift register.
If both the load and ena inputs are asserted (1), the load input has higher priority.

题目网站

 1 module top_module(
 2     input clk,
 3     input areset,  // async active-high reset to zero
 4     input load,
 5     input ena,
 6     input [3:0] data,
 7     output reg [3:0] q); 
 8 always @(posedge clk or posedge areset)begin
 9     if(areset)begin   //在最高位次首先实现reset=1时的复位
10             q <= 4'b0;
11         end
12     else if(load) begin   //如果load=1,则进行加载
13             q <= data;
14         end
15     else if(ena)begin   //实现右移的功能,这个{1'b0,q[3:1]}写得巧妙
16             q <= {1'b0,q[3:1]};
17         end
18         else begin
19             q <= q;
20         end
21     end
22 
23 endmodule

再写:
上面写的代码仿真的时候没有出错,但是应该是没有完成题目中If both the load and ena inputs are asserted (1), the load input has higher priority.的要求,修改如下:

module top_module(
    input clk,
    input areset,  // async active-high reset to zero
    input load,
    input ena,
    input [3:0] data,
    output reg [3:0] q); 
    always@(posedge clk,posedge areset)begin   
        if(areset)begin
            q<=4'b0;
        end
        else begin
            case({load,ena}) 
                2'b10:begin
                    q<=data;
                end
                2'b01:begin
                    q<={1'b0,q[3:1]};
                end
                2'b11:begin
                    q<=data;
                end
                3'b00:begin
                    q<=q;
                end
                endcase
            end
    end
endmodule

标签:load,ena,shift,register,areset,input,bit
From: https://www.cnblogs.com/jzzg/p/18129268

相关文章

  • PHP代码审计——Day 9-Rabbit
    漏洞解析classLanguageManager{publicfunctionloadLanguage(){$lang=$this->getBrowserLanguage();//获取浏览器语言$sanitizedLang=$this->sanitizeLanguage($lang);//去除可能的不安全字符require_once("/lang/$sanitizedLan......
  • 消息中间件RabbitMQ_RabbitMQ的安装和配置2
    RabbitMQ官方地址:http://www.rabbitmq.com/安装文档:资料/软件/安装RabbitMQ.md注意:请使用资料里提供的CentOS-7-x86_64-DVD-1810.iso安装虚拟机. 一、安装依赖环境在线安装依赖环境:yuminstallbuild-essentialopensslopenssl-develunixODBCunixODBC-develmake......
  • 问题解决 usr/include/c++/11/bits/list.tcc:344:24: error: no match for ‘operator
    1.问题解决usr/include/c++/11/bits/list.tcc:344:24:error:nomatchfor‘operator==’错误解释:这个编译错误表明编译器在尝试使用==操作符比较两个对象时找不到匹配的操作符函数。在C++中,如果你尝试比较两个自定义类型的对象,且没有为这些对象定义==操作符,编译器将无法进......
  • js 常用数组函数 join() 拼接, push()尾部添加、pop()移除最后一项、shift()删除第一项
    js常用数组函数join()拼接,push()尾部添加、pop()移除最后一项、shift()删除第一项、unshift()头部添加、sort()小到大顺序排列、slice()截取获取新数组、splice()分隔截取数组、concat()连接、reverse()反转文章目录1.join()函数2.push()函数3.pop()函数4.sh......
  • 大菜菜学习RabbitMQ——第九篇
    这篇使用较为easy的方式去声明队列还有交换机所以我们先把上篇文章里面创建的队列还有交换机删除首先我们先把DirectConfiguration这个类的@Configration注解注释然后就可以开始进行删除操作了然后我们就可以开始在Listener里面写代码了@RabbitListener(bindings=@QueueBi......
  • 大菜菜学习RabbitMQ——第八篇
    本篇文章主要讲如何用java代码创建队列和交换机,或者说是声明 我们都是在消费者这边进行声明所以我们开始写代码 我们先创建这么个文件packagecom.itheima.consumer.config;importorg.springframework.amqp.core.*;importorg.springframework.context.annotation.Be......
  • Idea 的 Ctrl + Shift + F 快捷键失效
    失效的原因:是因为微软输入法或安装的其他输入法(比如搜狗输入法)的"简繁"切换的快捷键冲突了解决方案:设置搜狗输入法的"简繁"快捷键,把"简繁"快捷键换成其他,不要用Ctrl+Shift+F1、微软输入法:快捷键修改如下(1)右键点击微软输入法进入设置 2、搜狗输入法:快捷键修改......
  • 大菜菜学习RabbitMQ——第七篇
    这一篇文章我们讲的是另一个转换机topic转换机topic:话题相对于其他交换机来说这个交换机有很强的灵活性首先我们需要创建两个queue,名字的话这样就可以 然后创建对应的交换机在这里交换机的类型应该要选择为topic然后我们就可以开始binding了 这里我们看到有个符号我们......
  • 大菜菜学习RabbitMQ——第六篇
    这一篇还是讲交换机,direct交换机direct:定向这个交换机其实是在binding的时候有一个对应的bindingKey,所以可以做到定向发送的意思,类似于私聊,但是如果bindingKey相同,其实等同于是fanout交换机,所以总的来说,direct这个交换机功能比fanout交换机更加强大,适用于更加复杂业务一开始,我......
  • 大菜菜学习RabbitMQ——第五篇
    今天这篇文章想要讲的是交换机,有三个交换机,fanout,direct,topic,这篇文章里面我要写的是fanout交换机fanout:广播广播顾名思义就是所有都通知到,所以在发送消息时,所有的queue都可以收到消息首先我们需要先建立一个交换机,在rabbitmq可视化界面当中我们创建一个交换机 在这里写一个......