首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >FPGA相关职位笔/面试题分享(二)

FPGA相关职位笔/面试题分享(二)

作者头像
FPGA技术江湖
发布2026-03-23 20:14:03
发布2026-03-23 20:14:03
1040
举报
本篇主要讨论FPGA相关职位笔/面试题分享(二)

1. 用verilog设计一个模块,模块名称为clock_gen,模块输入为(input sys_clk, input sys_rst_n),模块输出为(output reg pulse_1ms, output reg pulse_1s)。

其中,sys_clk为时钟信号,时钟频率为62.5MHz;sys_rst_n为复位信号,低电平复位;pulse_1ms为每1ms为周期的高电平信号,持续一个时钟周期;pulse_1s为每秒为周期的高电平信号,持续一个时钟周期。

请写出以上模块的verilog代码,注意保持语法规范。

解析:主要考察基本的verilog 的设计能力。

写出模块框架,给出两个计数器,在对应位置给出输出即可。

代码语言:javascript
复制
moduleclock_gen (

  input    wire          sys_clk,
  input    wire          sys_rst_n,

  output   reg           pulse_1ms,
  output   reg           pulse_1s
);

  parameter  T_1ms     =  62_500;
  parameter  T_1s      =  62_500_000;

  reg        [15:0]      cnt_1ms;
  reg        [25:0]      cnt_1s;

  always @ (posedge sys_clk) begin
    if (sys_rst_n == 1'b0)
      cnt_1ms <= 16'd0;
    else
      if (cnt_1ms < T_1ms - 1'b1)
        cnt_1ms <= cnt_1ms + 1'b1;
      else
        cnt_1ms <= 16'd0;
  end
  
  always @ (posedge sys_clk) begin
    if (sys_rst_n == 1'b0)
      pulse_1ms <= 1'b0;
    else
      if (cnt_1ms == T_1ms - 1'b1)
        pulse_1ms <= 1'b1;
      else
        pulse_1ms <= 1'b0; 
  end
  
  always @ (posedge sys_clk) begin
if (sys_rst_n == 1'b0)
      cnt_1s <= 26'd0;
else
      if (cnt_1s < T_1s - 1'b1)
        cnt_1s <= cnt_1s + 1'b1;
else
        cnt_1s <= 26'd0;
  end

  always @ (posedge sys_clk) begin
    if (sys_rst_n == 1'b0)
      pulse_1s <= 1'b0;
    else
      if (cnt_1s == T_1s - 1'b1)
        pulse_1s <= 1'b1;
      else
        pulse_1s <= 1'b0;
end
    
endmodule
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档