libero NetlistViewer

libero 编译后的 网表查看:

总计 写了 两个模块 , 一个 上电复位模块, 一个 led 一秒 闪烁一次 !

 

image

 

///////////////////////////////////////////////////////////////////////////////////////////////////
// Company: <Name>
//
// File: led_toggle.v
// File history:
//      <Revision number>: <Date>: <Comments>
//      <Revision number>: <Date>: <Comments>
//      <Revision number>: <Date>: <Comments>
//
// Description: 
//
// <Description here>
//
// Targeted device: <Family::ProASIC3> <Die::A3P250> <Package::100 VQFP>
// Author: <Name>
//
/////////////////////////////////////////////////////////////////////////////////////////////////// 

//`timescale <time_units> / <precision>

module led_toggle( 
    input clk_40mhz,
    input rst_n,
    output led_0
 );

// 即 32 位计数器最大计数值为 2^32
// 时钟频率为 40 MHz,对应周期为 25 ns,因此最大计时时间约为 107.374 秒
parameter CLK_40MHZ_TICK_100S   = 32'd4000000000;
parameter CLK_40MHZ_TICK_10S    = 32'd400000000;
parameter CLK_40MHZ_TICK_5S     = 32'd200000000;
parameter CLK_40MHZ_TICK_1S     = 32'd40000000;
parameter CLK_40MHZ_TICK_200MS  = 32'd8000000;
parameter CLK_40MHZ_TICK_100MS  = 32'd4000000;
parameter CLK_40MHZ_TICK_10MS   = 32'd400000;


// 闪烁 led  100ms 闪烁一次
parameter LED_0_TOGGLE_CNT = CLK_40MHZ_TICK_1S;

// 时钟计数
reg [25:0] clk_40mhz_cnt = 26'd0;

// 定义 led_0 寄存器
reg led_0_reg;

always @(posedge clk_40mhz or negedge rst_n) begin
        if (!rst_n) begin
            clk_40mhz_cnt <= 26'd0; // 复位计数器
            led_0_reg <= 1'b1; // 初始状态熄灭
        end
        else if( clk_40mhz_cnt >= LED_0_TOGGLE_CNT )begin
            clk_40mhz_cnt <= 26'd0;  // 计数器清零
            led_0_reg <= ~led_0_reg; // 翻转 led 状态
        end
        else begin
            clk_40mhz_cnt <= clk_40mhz_cnt + 26'd1; // 计数加一
        end
    end

assign led_0 = led_0_reg; // 低电平点亮


//<statements>

endmodule

 

top.v 

// top.v
module top (
    input clk_40mhz,      // 40 MHz input  GPIO->62 GCA1/IO50PDB1
    inout rst_n_in,       // reset input  GPIO->64

    // 观察信号
//    output gpio_26,

    // LED Interface
    output led_0    // LED0 output GPIO->13, 低电平点亮

);
 
// reset
reset reset_i(
    // Inputs
    .CLK_IN(clk_40mhz),
    // Outputs
    .RESET_OUT(rst_n),
    // Inouts
    .RESET_IN(rst_n_in)
);

// 例化 LED 闪烁 模块
led_toggle led_toggle_inst (
    .clk_40mhz(clk_40mhz),  // 40 MHz clock input
    .rst_n(rst_n),          // Reset input from power_on_reset
    .led_0(led_0)           // LED0 output
);

endmodule

TOP 网表查看 :

image

 RESET  网表:

image

 led 网表文件: 一个 计时器 , 挺复杂 !

image

 

posted on 2026-01-16 11:09  所长  阅读(1)  评论(0)    收藏  举报

导航