原创 讨论VHDL与verilog 的不同

2013-5-29 14:41 1030 17 17 分类: FPGA/CPLD

 

    1.

在verilog 中在always@( posedge clk)能写出组合电路吗

 

module verilog_test(clk,a,data,asy_rst);

input clk;

input a;

input data;

output asy_rst;

reg asy_rst;

 

always @(posedge clk)

begin 

if(a==2'h0)

 asy_rst<=data;

end

endmodule

RTL图如下

图片2.jpg

      vhdl的写法 下如

                            Process(clk)

                              Begin

                 If clk’event and clk’event =’1’ then

                   If  a>2500  then

                   A  <=0;

                   ELSE  A<=A+’1’;

                   END IF;

                   END IF;

                   C<=A+B;

                   END PROCESS;

 

2.

//verilog  使能时钟为  同步   先检查时钟clk   后检测if 中使能条件

 

//在  vhdl  中是先检查  使能 然后  才是clk

If (en=‘1’)then

  If  clk‘event and clk’event=‘1’then

 

3.always 模块中是串行还是并行

代码一

module verilog_test(clk,a,data,asy_rst);

input clk;

input a;

input data;

output asy_rst;

reg asy_rst;

 

always @(posedge clk )

begin

asy_rst<=2'b0;

if(a==2'h0)

 asy_rst<=data;

  end

  endmodule 

 

 

代码二

module verilog_test(clk,a,data,asy_rst);

input clk;

input a;

input data;

output asy_rst;

reg asy_rst;

 

always @(posedge clk )

begin

asy_rst<=2'b0;

if(a==2'h0)

 asy_rst<=data;

  end

  endmodule 

在看下面这段代码   是先执行asy_rst<=2’b0 吗     那 生成的 是个怎样的RTL呢 

答案是  这个 代码 结果和   上面的是一样的    也是一个选择器  一个  触发器 

这里 可以看出  执行的关系   ,我认为 在always 模块中是先 把 模块执行完后  所有的结果都不更新, 等clk到来了  更新, 完全与电路相关

图片3.jpg

 

 

 

 

 

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
17
关闭 站长推荐上一条 /2 下一条