找回密码
 注册
关于网站域名变更的通知
查看: 251|回复: 3
打印 上一主题 下一主题

fpga控制芯片工作,verilog编写代码。请问芯片的初始化用什么方式实现?

[复制链接]
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-11-18 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    FPGA控制芯片工作,verilog编写代码。请问芯片的初始化用什么方式实现?
    ' h8 ?, K' H3 e  R8 c; {& R! R

    该用户从未签到

    2#
    发表于 2022-11-18 14:52 | 只看该作者
    没有初始化,直接烧写程序,程序会上电启动,设置一个reset信号就可以

    该用户从未签到

    3#
    发表于 2022-11-18 15:18 | 只看该作者
    写一个复位模块
    0 U4 p* v7 q# V7 b8 E, _# e然后在此模块中把要设置的初值设好
    4 R2 T1 C! z/ N0 c! d举个例子9 S0 U& B, M4 M$ E- D
    module SHORT_RESET(0 N6 u1 A+ u$ q, d4 ?! e1 G) f
    inpu wire Clk,5 @9 C6 O7 G+ f
    output reg Reset_n
    3 y" d! _6 j( L3 F: Y# c9 Q);# m. E: ~7 F; h
    parameter U_DLY = 2;- k1 ~: k- T# `
    parameter RSTCNT_LENGTH = 12'd2499;0 J" `+ K* x4 P
    parameter RSTCNT_WIDTH = 12;
    " d/ J7 r  A1 X6 v5 n% Oreg [RSTCNT_WIDTH-1:0] Rst_Cnt;4 |, O# J! X) P6 \& f# q
    always @ ( posedge Clk )
    0 B7 k5 A  J$ r# s8 i. Rbegin
    : |( l6 z6 D5 P) Q" oif ( Rst_Cnt == RSTCNT_LENGTH )
    $ c  |2 f! h$ U, ^+ _# d7 Z4 Sbegin8 `3 A' U# h# V6 L% A1 g* F6 e. o7 N
    Rst_Cnt <= RSTCNT_LENGTH;
    4 ?/ T" s# o& z, y$ Cend
    9 L: T. b/ J6 [+ Celse if ( Rst_Cnt < RSTCNT_LENGTH )
    " |8 T% T9 [' W) l% Tbegin" B6 \2 m/ M  t7 R3 y. J# n
    Rst_Cnt <= Rst_Cnt + 1'b1;/ g9 O# j! b* C1 Q
    end
    * ?, i( G$ h4 g, uelse begin
    / j1 [1 o( C1 |+ N6 P3 ERst_Cnt <= {(RSTCNT_WIDTH){1'b0}};
    4 [  N. z/ Z& |' ]' b' J+ s1 Kend/ u: C; |1 B7 F: ^( J2 _
    end$ }7 B" V/ T0 t7 }& ^6 u" {! I$ E
    //在此模块中对你所要的赋初值的寄存器赋值+ r% ~1 W, |5 a! C( V4 ]1 T' ~
    always @ ( posedge Clk )1 Z% ~: U% }5 J
    begin
    3 z* c! ], x) ^: lif ( Rst_Cnt == RSTCNT_LENGTH )
    2 R! _/ C$ I! w( d9 F5 N) Cbegin! n2 J9 s4 v- I3 }7 @* u6 W
    Reset_n <= 1'b1;/ J4 u/ j4 H, V5 H# c
    end
    ( X" t+ G" y3 K" g/ _9 ]else begin
    . w7 y, \3 d4 L) B% i4 _Reset_n <= 1'b0;
    7 q2 E" O% j# Lend
    * R* o% Y( N1 F9 W: ?8 mend
    ( S; F2 m7 P6 w" N  v0 V5 Yendmodule

    该用户从未签到

    4#
    发表于 2022-11-18 15:23 | 只看该作者
    一般来说芯片内部应该有复位信号吧,你根据一楼提供的代码,在代码中加一个复位信号比如说6 C4 y- Q( ~8 v4 q
    rst <= 1'd0;的语句输出给芯片,这样在寄存器初始化后,在对芯片内部做复位操作,然后再开始芯片的正常工作。
    3 A+ |- Q) E, X- ]- O2 K$ S9 w或者芯片是根据某个信号开始工作,比如说是在enable信号拉高的时候芯片才开始工作的,那么就在前面寄存器初始化完成之后再拉高这个enable信号就可以了。大概原理就是这样。。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-31 07:17 , Processed in 0.125000 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表