完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
module counter2(clk, rst, data_in, data_size, p2s_en, query_flag); input clk; input [63:0] data_in; output [7:0] data_size; output query_flag; //reg [7:0] count;//2016.02.29 reg [7:0] data_size; reg query_flag; begin //----------------------------------------------------------------------------- always @(posedge clk or negedge rst) if (!rst) else if (data) end begin begin p2s_en <= 1'b0; m <= 0; end else if (flag)//2016.03.01 //if (flag && data[127])//2016.03.01 data_size <= 64-m; if (data[63]==1 && data[62]==0 && data[61]==0 && data[60]==0) query_flag <= 1'b1; query_flag <= 1'b0; else data<= data<< 1; end //if (data[127]), then program will be a dead cycle. for example data[7:0]=8'b01001101. //2015.04.02 /* p2s_en <= 1'b1; p2s_en <= 1'b0; end /* //ERROR: memory allocation failure begin begin p2s_en <= 1'b0; m <= 0; else while (!data[127]) data <= data << 1; end p2s_en <= 1'b1; query_flag <= 1'b1; query_flag <= 1'b0; end endmodule
|
|
相关推荐
3个回答
|
|
本帖最后由 卿小小_9e6 于 2020-12-12 16:06 编辑
感觉代码有的地方不规范,有的变量我也没看懂什么意思。 猜测代码功能是对数据有效长度做计量,所以对部分信号做了调整,包括增加size_valid信号。 仿真了三组数据没有问题,代码可综合/已打包。
最佳答案
|
|
|
|
`timescale 1ns/1ns
module counter2(clk, rst, data_in, data_size, p2s_en, query_flag); input clk; input rst; input [63:0] data_in; output [7:0] data_size; output p2s_en; output query_flag; reg [63:0] data; reg [7:0] data_size; reg p2s_en; reg query_flag; reg flag; integer m; always @(data_in) begin data = data_in; end //----------------------------------------------------------------------------- always @(posedge clk or negedge rst) begin if (!rst) flag <= 1'b0; else if (data) flag <= 1'b1; end //----------------------------------------------------------------------------- always @(posedge clk or negedge rst) begin if (!rst) begin data_size <= 8'b0; p2s_en <= 1'b0; query_flag <= 1'b0; m <= 0; end else if (flag) begin if (data[63]) begin data_size <= 64-m; p2s_en <= 1'b1; if (data[63]==1 && data[62]==0 && data[61]==0 && data[60]==0) query_flag <= 1'b1; else query_flag <= 1'b0; end else begin data<= data<< 1; m <= m+1; end end end endmodule 刚刚的代码有问题,重新发了这个 |
|
|
|
路过学习,谢谢分享。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1726 浏览 1 评论
1473 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1686 浏览 0 评论
943 浏览 0 评论
2469 浏览 0 评论
1516 浏览 38 评论
5728 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 18:40 , Processed in 0.575150 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号