数据累加输出
2023-09-14 09:10:03 时间
数据累加输出
题目描述
实现串行输入数据累加输出,输入端输入8bit数据,每当模块接收到4个输入数据后,输出端输出4个接收到数据的累加结果。输入端和输出端与上下游的交互采用valid-ready双向握手机制。要求上下游均能满速传输时,数据传输无气泡,不能由于本模块的设计原因产生额外的性能损失。
电路的接口如下图所示。valid_a用来指示数据输入data_in的有效性,valid_b用来指示数据输出data_out的有效性;ready_a用来指示本模块是否准备好接收上游数据,ready_b表示下游是否准备好接收本模块的输出数据;clk是时钟信号;rst_n是异步复位信号。
`timescale 1ns/1ns
module valid_ready(
input clk ,
input rst_n ,
input [7:0] data_in ,
input valid_a ,
input ready_b ,
output ready_a ,
output reg valid_b ,
output reg [9:0] data_out
);
reg [1:0] cnt;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
cnt <= 1'b0;
else if(valid_a == 1'b1 && ready_a == 1'b1)
cnt <= cnt + 1'b1;
else
cnt <= 1'b0;
end
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
valid_b <= 1'b0;
else if(cnt == 2'd3 && valid_a == 1'b1 && ready_a == 1'b1)
valid_b <= 1'b1;
else if(cnt == 2'd0 && valid_a == 1'b1 && ready_a == 1'b1 && ready_b == 1'b1)
valid_b <= 1'b0;
end
//同时为高或同时为低时,考虑组合逻辑
assign ready_a = !valid_b | ready_b;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
data_out <= 10'b0;
else if(cnt == 2'd0 && valid_a == 1'b1 && ready_a == 1'b1 && ready_b == 1'b1)//表示导入第一个数
data_out <= data_in;
else if(valid_a == 1'b1 && ready_a)//表示啥时加
data_out <= data_out + data_in;
end
endmodule
相关文章
- JS如何把Object对象的数据输出到控制台中
- java输入与输出的格式已经一些知识点[通俗易懂]
- 浅谈 SAP ABAP 系统里的 ALV 输出方式实现
- 【目标检测】YOLOv5:添加漏检率和虚检率输出
- 2022-10-31:以下go语言代码输出什么?A:map[];B:nil;C:Panic;D:编译错误。package mai
- js获取当前时间标准格式_js获取当前时间年月日并输出
- django restframework choice 自定义输出数据
- PHP循环输出二维数组的数据
- VUE 前端文本输出为超文本
- 关于Linux下通过ping/mtr 长期监控网络输出日志报告的一些笔记
- FS8024A快充取电诱骗IC芯片USB PD 协议 SINK 端输出控制器芯片
- 2023-04-15:ffmpeg的filter_audio.c的功能是生成一个正弦波音频,然后通过简单的滤镜链,最后输出数据的MD5校验和。请用go语言改写。
- python将文本转换成图片输出详解编程语言
- MySQL格式化数据输出:让数据易读可见(mysql格式化输出)
- php curl获取的数据不直接输出详解编程语言
- JSP out对象:向客户端输出数据
- JSP Out.clearBuffer()方法:清除缓冲区中的数据并输出到客户端
- JSP JSTL <x:out>标签:输出XML信息
- 使用SQL Server输出精确数据(sqlserver输出)
- MYSQL输出数据的实战指南(mysql输出语句)
- Oracle行合并:实现一行数据的平滑输出(oracle行合并)
- Linux将数据输出到文件中的实现方法(linux将输出到文件)
- 解决PHP输出MSSQL数据中文乱码问题(php输出MSSQL乱码)
- Mysql输出格式:给你最可靠的数据结果吧!(mysql 输出格式)
- Oracle两次查询拼接实现复杂数据输出(oracle两次查询拼接)
- Redis实现快速输出所有存储数据(redis 输出所有数据)
- 文件Redis实现数据输出至CSV文件(Redis输出csv)
- go和python调用其它程序并得到程序输出
- 用Python输出一个杨辉三角的例子