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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    FPGA控制芯片工作,verilog编写代码。请问芯片的初始化用什么方式实现?
    / a5 s# y2 G. g. p4 w1 n

    该用户从未签到

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

    该用户从未签到

    3#
    发表于 2022-11-18 15:18 | 只看该作者
    写一个复位模块8 b; ~  }% x4 P) Z
    然后在此模块中把要设置的初值设好
    $ N6 S, d4 J$ \6 F& V* y$ k7 D- U5 A0 D举个例子3 s/ O# z2 y" b
    module SHORT_RESET(8 u: y: {$ F. a; L8 T' i
    inpu wire Clk,$ W1 G+ b7 o* z* V6 z  N
    output reg Reset_n2 y5 r7 V/ l7 R/ V  Z1 u
    );
    . J9 p7 R  z" ~. z6 o  m! _parameter U_DLY = 2;
    / X7 c2 }2 f+ ^# B' s: \* }0 Z. Eparameter RSTCNT_LENGTH = 12'd2499;
    . A5 ]8 [3 j) v, yparameter RSTCNT_WIDTH = 12;- M8 y7 B+ R7 K7 H. O
    reg [RSTCNT_WIDTH-1:0] Rst_Cnt;
    " ^8 k, E& h8 x2 J+ Jalways @ ( posedge Clk )
    1 [, s( |: Q- w" xbegin
      |! a0 L5 \9 O8 R$ @- _if ( Rst_Cnt == RSTCNT_LENGTH )
    $ M6 P' l- [. F" [3 b8 W  p9 o4 Nbegin4 S( F# l. k, n8 c( A' W9 f
    Rst_Cnt <= RSTCNT_LENGTH;1 S# @8 }+ K$ F( M1 s! [3 M3 t) |
    end9 z7 U2 H) b  T" u
    else if ( Rst_Cnt < RSTCNT_LENGTH )
    2 U( Y' O" Y  V# C. b- ]2 Cbegin
    * K6 b% P+ R; H* {" i# F; gRst_Cnt <= Rst_Cnt + 1'b1;5 R% R% b' j! }! S2 ~" Z4 R* M
    end+ p" e1 H( ~5 m7 E
    else begin2 r4 t. Y% `4 O3 {& K5 u0 e
    Rst_Cnt <= {(RSTCNT_WIDTH){1'b0}};( v. a: \2 B0 `3 i
    end
    7 |, @& \, `; ?7 K9 o6 xend$ G! [6 D, T8 d! L. _5 a* u
    //在此模块中对你所要的赋初值的寄存器赋值
    ( R5 N7 k3 r) w, }3 Salways @ ( posedge Clk )
    : F; m, O! k4 m/ J- h, fbegin
    % k: D5 {9 z0 Q: E, \. l6 i6 cif ( Rst_Cnt == RSTCNT_LENGTH )
    ' y2 b$ T2 c! N, \2 ?2 R- Kbegin1 B: w8 `: @+ @" u0 T
    Reset_n <= 1'b1;* m# C! B+ U0 r3 s1 T
    end
    7 o3 F- f* k$ G: z. T9 U/ Delse begin
      l6 U: q7 y  B% l3 W) F9 ?: I' m* mReset_n <= 1'b0;0 Y! u5 r5 N2 K( ]$ L) U- u5 x
    end
    5 x* a7 x1 q9 Y% Mend
    1 \' d" R! S) y, h* G4 B5 iendmodule

    该用户从未签到

    4#
    发表于 2022-11-18 15:23 | 只看该作者
    一般来说芯片内部应该有复位信号吧,你根据一楼提供的代码,在代码中加一个复位信号比如说
    2 L9 {. m# D3 X' Y* G) G( {1 Frst <= 1'd0;的语句输出给芯片,这样在寄存器初始化后,在对芯片内部做复位操作,然后再开始芯片的正常工作。" U% I7 }3 O: o" R" I6 B
    或者芯片是根据某个信号开始工作,比如说是在enable信号拉高的时候芯片才开始工作的,那么就在前面寄存器初始化完成之后再拉高这个enable信号就可以了。大概原理就是这样。。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-5 14:15 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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