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

写 Verilog 如何做到心中有电路?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2024-9-26 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x

今天给大侠带来在FPAG技术交流群里平时讨论的问题答疑合集(十三),以后还会多推出本系列,话不多说,上货。4 H& B" {! W: K

7 M; d, |8 W1 }; S$ B0 U9 t

FPGA技术交流群目前已有十多个群,QQ和微信均覆盖,有需要的大侠可以进群,一起交流学习,共同进步。


+ p" \% q/ l/ w8 P6 w& P

欢迎加入FPGA技术微信交流群14群!

( y% d' n. G$ W% Y9 L0 r0 p& w

0 e! n+ g7 W1 o# k5 C- C

交流问题(一)


4 U5 l! b! Q0 V- F5 p! j) Q


2 `1 r0 t/ _. s1 Q( A


& _. q/ \; F4 M' n3 Q+ B9 U, B1 a- F

. _* |  V4 S' T) b7 x% ~+ N' C

Q:写 Verilog 如何做到心中有电路?老师说没电路就不要写代码,但我写个乘法器在综合前都想不出它电路啥样,全加器还行。

8 v. J& W: V% _; a  B

A:要在写 Verilog 代码时做到心中有电路,可以尝试以下方法:


0 R- L8 ~7 Q) x& _1 N

1. 深入学习数字电路基础知识:包括各种逻辑门、组合逻辑电路、时序逻辑电路的原理和结构,理解它们的工作方式和功能。


7 U. R  E, j# C" p: Z2 }1 Y

2. 分解复杂电路:对于像乘法器这样的复杂电路,将其分解为更小的、可理解的模块。例如,先理解加法器、移位器等基本单元,再逐步构建乘法器的概念。

4 p4 C8 n* k% C

3. 手动绘制电路草图:在开始编写代码之前,尝试在纸上画出电路的大致结构和连接方式,这有助于形成直观的印象。

% O  ?5 _5 I  s$ X: W2 ?  C3 d3 ?5 b

4. 分析已有电路实例:研究现有的成功电路设计案例,包括其 Verilog 代码和对应的电路原理图,从中学习和借鉴。

; A3 z7 A5 b7 D

5. 模拟和仿真:使用工具进行电路的模拟和仿真,观察信号的变化和电路的行为,这能增强对电路实际工作情况的理解。

( [. u$ G/ n5 N+ F

6. 反复练习和总结:通过不断编写不同类型的电路代码,并总结经验,逐渐培养对电路的直觉和理解。


0 ]7 _. Y9 J* e1 l

总之,心中有电路需要时间和实践的积累,不断强化对数字电路的理解和认识。

$ G+ i6 I6 h- ?! s5 k( P

3 T) O9 L! @( ~! Z- b

交流问题(二)

$ V. q" Q: r# @: F. I2 `4 H


5 B  W% w. S) G4 z8 B3 X  V. N* @


9 T# V( y9 p  m- z% y1 V! A* H
, o0 P) f" L- D7 S& D: J( `

Q:如何通俗地讲清 I²C、SPI、USB、UART、RS232 到底是什么东西?通俗,通俗,通俗。百度上的术语一大堆,到头来把我绕的糊里糊涂,我知道您什么都懂,能解释的让外行人也理解吗。


% c( d# ?' x, N/ H
8 r* d1 `' b# K4 g& g8 |) q& R

A:I²C 就像是一个有两个管理员的小队伍。这两个管理员一个负责发命令(主设备),一个负责听命令和回答(从设备)。他们通过两根线来交流,一根线传数据,一根线控制节奏,能让很多小设备(比如传感器、存储器)和大设备(比如电脑的主板)方便地说话。

4 Z+ a0 Z3 J# H& o5 b# |# a* ]# L1 x

SPI 呢,就像是一个小团队,有一个带头的(主设备)和几个跟着的(从设备)。他们交流靠好几根线,一根专门发命令,一根专门收回答,还有专门用来控制什么时候说话的线,这样说话速度快,但线用得多。


' e3 @; a9 y- R& d3 O* E

USB 可以想象成一个多功能的管道,能把各种各样的东西(比如鼠标、键盘、优盘)连到电脑上。它很聪明,能自动认出连上来的是什么,而且还能同时干好多不同的活儿,比如一边传文件一边用鼠标。


# N& p) z  b+ @9 B2 }+ `9 d

UART 就像是两个人打电话,一个人说,另一个人听,说完一轮再反过来。他们就用一根线传要说的话,一根线控制啥时候说。


, z( V0 t" O! h7 G

RS232 也是两个人交流,不过它要求比较严格,比如说话声音大小(电压)得固定,而且说话的速度不能太快。它经常用在一些老一点的设备之间交流,像早期的打印机和电脑之间。


# i5 E0 d) ~9 T8 ]& r( Q3 ^" u' d2 [+ y1 ?2 b" L9 a

交流问题(三)


4 r8 J! H' q3 x4 z

; u, r1 }9 N# K# g" S

0 W+ {; b1 m, A  r$ ?

! G' y- P( Z( {) j6 e% M2 {

Q:为什么学了模数电还是看不懂较复杂的电路图?大三,电子技术实习需要做音频功率放大器,给了原理图,但是做原理图分析时,不明白为什么要选这样大小的电阻。

, \& m" b1 f5 }

A:学习了模数电之后仍然看不懂较复杂的电路图,特别是在分析元件参数选择时感到困惑是比较常见的情况,可能有以下几个原因:


4 z( f2 N8 u" ?( ~/ U

1. 理论与实践结合不足:模数电的学习更多侧重于理论知识和基本原理,而实际的电路图中涉及到众多的工程考虑和实际应用需求。对于实际电路中电阻等元件参数的选择,需要综合考虑性能、成本、稳定性等多方面因素,这需要更多的实践经验和对具体应用场景的了解。

) |1 h( e5 ?, J5 J# `1 i% S& R. R

2. 缺乏对特定电路功能的深入理解:对于音频功率放大器这类特定的电路,需要深入了解其工作原理、性能指标以及各种设计要求。如果对这些方面的理解不够深入,就难以明白为什么选择特定大小的电阻来满足电路的功能和性能。

4 |* H- ^# u. E! e

3. 对电路元件特性的掌握不够全面:电阻的选择不仅仅取决于阻值,还与功率、精度、温度系数等特性有关。如果对这些特性的了解不够全面,就难以准确判断为什么在特定的电路中选择了特定的电阻。


) l( S! d  w5 n0 Z

4. 缺少对电路设计原则和经验的积累:电路设计往往遵循一定的原则和经验,这些在书本知识中可能没有详细阐述。例如,在音频功率放大器中,为了实现特定的增益、带宽、失真度等指标,需要根据经验选择合适的电阻值。

  T. Q" H$ F. _6 n2 O) q

要解决这个问题,可以多参考相关的电路设计资料和实例,向有经验的人请教,同时自己多进行电路设计和分析的实践,逐步积累经验,提高对复杂电路图的理解和分析能力。


6 u* g; ?7 o. [3 i

3 i" B+ R& _) M, @3 g

交流问题(四)

4 q5 A* P5 T% @) u7 a) x

( `" w7 c1 N3 g* N7 g


$ _$ ^1 s; E$ C; `

Q:FPGA布线布局卡死一直布不到,在写verilog代码应该怎么规范写以减轻布线压力?我写了一个工程,但是布线布局一部卡住布不下去,想进一步规范verilog代码以成功布线,有哪些建议吗?

# T7 Q) b" ^2 d( I( L& N) C

A:以下是一些在编写 Verilog 代码时可以遵循的规范和建议,以减轻 FPGA 布线压力,仅供参考:


# p3 W2 t* F- T- `9 ?' d3 g

1. 模块划分:将复杂的设计合理地划分为多个功能独立的模块,提高代码的可读性和可维护性,也有助于布线工具更好地处理。

+ c; S3 t# S5 y, Q  o- N7 N

2. 时钟管理:尽量减少时钟的数量,避免使用过多的异步时钟。对于多个时钟域的设计,要正确处理跨时钟域的数据传输。


3 p, E) _( f6 f

3. 资源复用:对于相同功能的逻辑,尽量复用资源,减少硬件资源的消耗。

$ q9 a) H( P# h6 k

4. 编码风格:采用合适的编码风格,例如使用 case 语句而不是多个 if-else 嵌套,以减少逻辑的复杂性。

6 h6 x# v- y  ^. y4 H6 U6 S& Q

5. 减少扇出:控制信号的扇出数量,避免单个信号驱动过多的逻辑。


1 g  ?) E0 q& Q/ ]

6. 流水线设计:在适当的地方引入流水线,可以提高系统的工作频率,减轻布线压力。


% r. e! A2 X/ f+ Q

7. 同步设计:确保整个设计是同步的,避免出现异步逻辑。


7 F5 T& l8 d, B) G9 R! H& q+ a

8. 约束设置:为设计添加准确和合理的约束,如时钟频率、时序要求等,帮助布线工具更好地理解设计意图。


, o. K6 }) ~. m


1 _6 o8 H1 h, u6 h9 G( ^- e( Z4 A

9 B7 K* Y" L- Y# t  \" v0 n

今天先整理四个问题答疑,后续还会持续推出本系列。

# d2 c% L  `* g7 Y
  • TA的每日心情
    开心
    2023-6-1 15:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2024-9-29 14:47 | 只看该作者
    学Verilog怎么开始呀,太难学了
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-4 21:42 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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