verilog - 我的“并行到串行”verilog 代码有什么问题
问题描述
这是我的代码,在此先感谢。
module parallel2serial#(parameter size=4)(pin, clk, load, rst, sout, finish);
input [size-1 :0] pin;
input clk, rst, load;
output reg finish;
output sout;
reg [2:0]count;
reg [size-1 :0] data;
reg dout;
always@(posedge clk)begin
if(!rst)begin dout<=0; end
else if(!load)begin
data<=data>>1;
dout<=data[size-1];
end
else data<=pin;
end
always@(posedge clk)begin
if(!rst)begin count<=0; finish<=0;end
else begin
if(count==2'b11) begin count<=0; finish<=1;end
else begin count<=count+1; finish<=0;end
end
end
assign sout=dout;
endmodule
解决方案
至少有一个错误。您正在将数据移向最低有效位(向右),同时从最高有效位获取输出。您应该输出 lsb 而不是 msb,或者更改寄存器移位的方向。
推荐阅读
- ruby-on-rails - 使用 chrome.identity 和 Rail 的 Doorkeeper 撤销 OAuth 令牌
- mysql - 外键约束 -(错误 1215)。请协助:)
- javascript - 我在使用 for in 循环删除对象键时遇到问题
- reactjs - React Redux 表单输入编辑返回不受控输入的错误消息
- javascript - 根据激活的 ID 和类更改 body 的背景图像属性
- r - 根据至少一个共同特征创建组
- ansible - Ansible 将 zip 列表与目录进行比较
- c# - Uri.EscapeDataString 不转换左括号和右括号
- arrays - 汇编x86中数组中整数的最长运行
- java - 如何解决“无法对非静态方法进行静态引用”?