[verilog]

编写了两个文件,配置了输出口

[复制链接]
286|3
手机看帖
扫描二维码
随时随地手机跟帖
fengyu2513|  楼主 | 2021-3-5 14:22 | 显示全部楼层 |阅读模式
我编写了两个文件,配置了输出口,,LASER_PWM  始终输出不了波形,请问下,这个是什么原因呀?modesiem仿真是有波形输出的,IO口配置是正确的,将PWM。v文件里的内容到top_indepen.v  去实现就有波形的输出!!
//////////////-------PWM.V   文件

`timescale 1 ns / 1 ps
module pwm(
        input rsn,
        input clk,
        input [15:0]pwm_counter,
        input [15:0]pwm_duty,
        output pwm_out
);

//reg[15:0]pwm_counter;
//reg [15:0]pwm_duty;
reg [15:0]counter=16'd0;
reg pwm_out_r;
always@(posedge clk or negedge rsn)
        //begin
                if(!rsn)
                        begin
                                counter <= 16'd0;
                        end
                else
                        begin
                                if(counter >= pwm_counter)counter <= 16'd0;
                                else counter <= counter + 1'd1;
                        end
//        end

always@(posedge clk or negedge rsn)
                if(!rsn)
                        begin
                                pwm_out_r <= 1'd0;
                        end
                else if(counter>=pwm_duty)
                                pwm_out_r<=1'b0;
                        else
                                pwm_out_r<=1'b1;

//wire                 pwm_out;
assign pwm_out = pwm_out_r;//((counter > pwm_duty) ? 1'd0 : 1'd1);

endmodule




//////   top_indepen.v                文件

//-------------------------Timescale----------------------------//
`timescale 1 ns / 1 ps
//--------------------FSMC_SIG---------------------//
module FSMC_INDEP(
        FPGA_CLK,        //鏉堟挸鍙嗛弶鑳祰閺呰埖灏烥PGA_CLK,25M
        FPGA_LEDR,
        FPGA_LEDG,
        FPGA_LEDB,
        WR,                        //FSMC閸愭瑤淇婇崣
        RD,                        //FSMC鐠囪淇婇崣
        CS0,                        //FSMC閻楀洭鈧
        A,                                //FSMC閸︽澘**冮幀鑽ゅ殠
        DB,                        //FSMC閺佺増宓侀幀鑽ゅ殠
        NADV,                        //FSMC閻ㄥ嚞ADV
      
        //LASER PWM
        LASER_PWM,
      
        //interpn_exti
        Interp_ex,
        testclk,
        testclk_100,
        testclk_50,
        FPGA_KEY
        );

        input FPGA_KEY;
        input FPGA_CLK,NADV;
        input WR,RD,CS0;
        inout [15:0]DB;
        input [24:16]A;
        output FPGA_LEDB,FPGA_LEDG,FPGA_LEDR;
        assign FPGA_LEDR = 1'd1;
        assign FPGA_LEDG = 1'd0;
        assign FPGA_LEDB = 1'd1;
        output LASER_PWM;
        output  Interp_ex,testclk,testclk_100,testclk_50;
      

//-------------------------MY_PLL-------------------------------//
        wire PLL_100M;
        wire PLL_8M;
        wire PLL_50M;
        wire PLL_12_5M;

      
        reg LaserCtrl1;                       
        reg [15:0] dbPower1;//閸旂喓宸 閸楃姷鈹栧В
        reg [15:0]dbQFreq1;//妫版垹宸

        reg [15:0]counter;

        initial                                                
        begin
                dbQFreq1 <= 16'd106;
                dbPower1 <= 16'd53;   
                LaserCtrl1 <= 1'd1;
        end
      
        MY_PLL                                 U1(
                                                                .inclk0(FPGA_CLK),
                                                                .c0(PLL_100M),
                                                                .c1(PLL_50M),
                                                                .c2(PLL_8M),
                                                                .c3(PLL_12_5M)
                                                                );//
//------------------------RST_Ctrl-----------------------------//
        wire RST_n;
        RST_Ctrl                                U2(
                                                                .FPGA_CLK(FPGA_CLK),
                                                                .RST_n(RST_n)
                                                                );        //娓氬瀵睷ST_Ctrl濡€虫健,鏉堟挸鍤崗銊ョ湰婢跺秳缍呮穱鈥冲娇RST_n

pwm  U5(
                .rsn(RST_n),
                .clk(PLL_8M),
                .pwm_counter(dbQFreq1),
                .pwm_duty(dbPower1),//閸旂喓宸
                .pwm_out(LASER_PWM)
                );
      

                                                               

endmodule

使用特权

评论回复
评论
feihufuture 2021-3-5 16:02 回复TA
加油! 

相关帖子

韩小野| | 2021-3-8 19:35 | 显示全部楼层
initial语句用于仿真,一般不支持综合,那么你给到PWM模块的输入值就是不定值,会导致你输出不正常;你可以把PWM模块里的pwm_counter和pwm_duty换成两个常量试试,看是不是有输出。

使用特权

评论回复
韩小野| | 2021-3-8 19:36 | 显示全部楼层
也可以用逻辑分析仪看一下你代码中变量哪个运行不符合你逻辑设计。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

38

帖子

0

粉丝