首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从寄存器中获取位?

如何从寄存器中获取位?
EN

Stack Overflow用户
提问于 2015-03-14 12:33:25
回答 2查看 1.9K关注 0票数 0

在代码中,您可以看到状态寄存器( reg N-1 State)。我想访问10个不同信号或寄存器中的10位状态,或者我们可以说是线。这怎么可能。??我使用了assign语句,但我想为时钟创建一个逻辑。这将产生一个错误

第33行:"<=“附近的语法错误

代码语言:javascript
复制
module Genes_Network #( 
                    N =10     // 
                            )  
                    ( input Clock ,
                      input Reset ,
            //                input reg [N-1:0] Satein,
                      output reg [N-1 : 0] State_Gene                                  
);
 reg    [N-1:0] State ; 
 reg    Fgf8,Emx2, Pax6,Coup_tfi,Sp8;  // Genes 
 reg    F,E,P,C,S ;                    // Proteins
 // 
  Fgf8    <= State[9] ;
  F       <= State[N-2] ;
  E       <= State[N-4] ;
  Pax6    <= State[N-5] ;
  Emx2    <= State[N-3] ;
  P       <= State[N-6] ;
  Coup_tfi<= State[N-7] ;
  C       <= State[N-8] ;
  Sp8     <= State[N-8] ;
  S       <= State[N-9] ;    
 always @(posedge Clock )

 //Network LOgic 
  Fgf8    <=  F & (~E) & S; 
 endmodule
EN

回答 2

Stack Overflow用户

发布于 2015-03-14 15:53:16

在设计组合逻辑时,应该使用assign和阻塞赋值(=),即:

代码语言:javascript
复制
assign Fgf8 = State[9]; 

应仅在时钟always块中使用非阻塞分配(<=),即:

代码语言:javascript
复制
always @(posedge Clock)
  Fgf8 <=  F & (~E) & S; 

还有一件事,记住你不能在两个不同的地方驱动相同的信号(在这个例子中是Fgf8)。

票数 0
EN

Stack Overflow用户

发布于 2015-03-14 19:46:56

语法错误是,您只能将网络或变量作为并发赋值语句(assign)或过程语句(alwaysinitial等)的一部分进行分配。简单地说

代码语言:javascript
复制
var <= value;

out本身是一个语法错误。在您的示例中,最好的解决方案可能是将reg声明更改为wire,然后

代码语言:javascript
复制
assign Fgf8    = State[9] ;
assign F       = State[N-2] ;
// etc.

您还可以像下面这样做一些事情:

代码语言:javascript
复制
always @(State)
begin
    Fgf8    = State[9] ;
    F       = State[N-2] ;
    // etc.
end

然而,我似乎记得敏感度列表( @(State) )使用向量可能比这更棘手(就像它可能需要分解成@( State[9] or @State[8] or @State[7] or ...)才能正常工作)。我已经专门使用SystemVerilog很多年了,所以我记不清具体的细节了。这是SystemVerilog可以提供帮助的另一个领域--可以使用SV的always_comb而不是always进行组合逻辑,并完全跳过显式敏感度列表。

在简单的情况下,您也许能够不受影响地使用非阻塞赋值(<=),但不建议这样做。所有其他@ you的评论也同样适用,你也应该注意它们。

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

https://stackoverflow.com/questions/29045500

复制
相关文章

相似问题

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