在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2143|回复: 0

[求助] VHDL转Verilog求助

[复制链接]
发表于 2014-10-11 17:01:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我将一个简单的分频电路VHDL转成Verilog, 综合出来不 match, 希望大神指点一下。我准备做一下仿真,但是我这个菜鸟未必能debug出来,所以先放问题出来请教各位。还想请问Verilog有没有像C语言或其他编程语言的调试方法?
VHDL:




  1. entity clk_gen is
  2.         port(
  3.                 clk_i                 :        in std_logic;
  4.                 clk_o                :        out std_logic;
  5.                 clk_period_i        :         in unsigned(29 downto 0);
  6.                 reset_i         : in std_logic
  7.         );
  8. end clk_gen;

  9. architecture rtl of clk_gen is

  10. signal counter        :        integer:=0;
  11. begin
  12.         process (clk_i, reset_i)
  13.         begin
  14.                 if (reset_i='1') then
  15.                         clk_o <= '0';
  16.                         counter <= 0;
  17.                 elsif (clk_i'event and clk_i='1') then
  18.                         counter <= counter + 1;
  19.                         if (counter < clk_period_i/2-1) then
  20.                                 clk_o <= '0';
  21.                         elsif (counter >= clk_period_i/2-1 and counter < clk_period_i-1) then
  22.                                 clk_o <= '1';
  23.                         else
  24.                                 counter <= 0;
  25.                                 clk_o <= '0';
  26.                         end if;
  27.                 end if;
  28.         end process;
  29. end rtl;


复制代码

Verilog:




  1. module clk_gen (clk_i, clk_o, clk_period_i, reset_i);

  2.    input clk_i;
  3.    output clk_o;
  4.    reg clk_o;
  5.    input[29:0] clk_period_i;
  6.    input reset_i;

  7.    integer counter;

  8.    initial
  9.    begin
  10.       counter <= 0;
  11.    end
  12.    always @(posedge clk_i or posedge reset_i)
  13.    begin
  14.       if (reset_i == 1'b1)
  15.       begin
  16.          clk_o <= 1'b0 ;
  17.          counter <= 0 ;
  18.          //counter = 0 ;
  19.       end
  20.       else begin
  21.          counter <= counter + 1 ;
  22.          //counter = counter + 1 ;
  23.          if (counter < clk_period_i / 2 - 1)
  24.          begin
  25.             clk_o <= 1'b0 ;
  26.          end
  27.          else if (counter >= clk_period_i / 2 - 1 & counter < clk_period_i - 1)
  28.          begin
  29.             clk_o <= 1'b1 ;
  30.          end
  31.          else
  32.          begin
  33.             counter <= 0 ;
  34.             //counter = 0 ;
  35.             clk_o <= 1'b0 ;
  36.          end
  37.       end
  38.    end
  39. endmodule


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 14:05 , Processed in 0.013119 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表