首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行串行HDL

并行串行HDL
EN

Stack Overflow用户
提问于 2013-03-31 16:01:25
回答 1查看 4K关注 0票数 1

我是一个并行的串行转换器使用环计数器在verilog。环计数器工作良好,但并行串行转换器工作不正常,我正在得到x未定的结果。我正在提供代码,请帮助我发现问题。

代码语言:javascript
复制
module PtoSTOP;

  reg clk,rst;

  wire [3:0] myout;
  wire       out;

  Ring a(clk,rst,myout);

  parToser x(myout,clk,rst,out);

  initial begin 
    clk=1;
    rst=1;

    #1 rst=0; 
 end

 always
   #2 clk=~clk;

 endmodule

并行串行转换器

代码语言:javascript
复制
module parToser(myout,clk,rst,out);

input clk,rst;
input [3:0] myout;
output reg  out;

reg [2:0]i;

always @(posedge clk or posedge rst) begin
  if(rst) begin
    out <= 0;
    i   <= 0;
 end
 else begin
   out <= myout[i];
   i   <= i+1;
  end
end

endmodule 

RingCounter

代码语言:javascript
复制
module Ring(clk,rst,myout);

input clk,rst;
output reg [3:0]myout;

always @(posedge clk or posedge rst) begin
  if(rst)
    myout<=1;
  else
    myout<=myout<<1;
end

 endmodule

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-31 17:19:53

我认为你看到的主要问题是parToser的一部分。

您有reg [2:0]i;,您可以增加它并使用它来寻址input [3:0] myout;,但是我可以保存0到7的值,其中一半在地址范围3:0 myout之外。您应该看到一个关于超出范围寻址的模拟错误。

此外,您还包括了一些带有重置条件的触发器,但没有将重置添加到“parToser”和“环行”中的灵敏度列表中:

代码语言:javascript
复制
always @(posedge clk) 

应:

代码语言:javascript
复制
always @(posedge clk or posedge rst)

有了这个触发器,I和myout变量将是x,因为它们还没有被设置为已知的条件。

注: parToser i = i+1;应该是i <= i+1;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15731357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档