• 正文
  • 相关推荐
申请入驻 产业图谱

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

09/26 14:57
439
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。

本篇主要讨论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 的设计能力。

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

module clock_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

 

本篇内容中有部分资源来源于网络,如有侵权,请联系作者。

如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!

相关推荐