Learning Path
浏览 开发笔记 相关教程与章节。
社区笔记、经验文章、测验题库与零散教程入口。
教程
1237
世界上的很多事情都是有规律的,就像 《高效能人士的七个习惯》,优秀的程序员也有七个主要特征。这些特征有些是先天具备的,也就是天赋,但有些是在日常的编程工作中学习、进步、积累、总结获得的。每个程序员都想知道自己是不是一个优秀的程序员,那么,就参考一下下面这 7 条,看看自己是否达到了做一个优秀程序员的标准。 1、喜欢帮助他人,照顾比自己差的程序员 程序员的脾气通常很大,常常会和客户、同事,甚至老板在程序问题上发生争执。优秀的程序员..
三目运算 熟悉 C/C++ 的老司机都知道三目运算 a ? b : c,这种写法替换简单的条件判断语句可以在不增加阅读难度的情况下,使代码尽量保持简洁。 int a, b, ret; //if-else if (a > b) ret = a; else ret = b; //三目运算符 ret = a > b ? a : b; Lua 中的三目运算 Lua 原生的语义并没有实现三目运算,一般是通..
惠新宸,是国内最有影响力的PHP技术专家,PHP开发组核心成员,PECL开发者,Zend公司外聘顾问。他曾供职于雅虎,百度,现在新浪微博任平台及数据部总架构师兼首席PHP顾问。惠新宸 是PHP NG核心开发者,PHP5.4,5.5的主要开发者。作为PECL开发者贡献了Yaf ,Yar以及Yac、Taint等多个优秀开源作品,同时也是APC,Opcache,Msgpack等项目的维护者。 从一个在网上搜PHP教程的初学者,到PHP开发组..
今天我们不谈抱负理想,也不谈具体的技术,我们来谈程序员看法上的几个典型错误。下面的这些问题都是我曾经遇到,或者是我的朋友们遇到过的问题,这些都是我个人的理解,希望对大家有帮助。 关于设计模式、设计原则 有人认为,熟悉了设计模式、设计原则,就学会了设计。其实,设计模式和设计原则,只是前人根据设计实践做的总结和提炼,设计,归根到底是要解决问题的,把具体问题的解决办法,经过一定的抽象,变成程序员的语言。 我见过一些人,他们知识渊博、见识广..
修改文件 /etc/resolvconf/resolv.conf.d/base(这个文件默认为空),添加以下内容: nameserver 8.8.8.8 nameserver 8.8.4.4 :wq 保存退出 执行更新: resolvconf -u 通过 /etc/resolv.conf 查看 DNS 设置: 可看到多了: nameserver 8.8.8.8 nameserver 8.8.4.4..
大家看一下,看看你躺了几条,或者你身边的同事躺了几条? 对客户态度特差,从来不承认Bug是自己造成的 整天想着向老板提加薪 经常在外人面前骂自己老板 带领组员开发项目,可项目决策从来是由组员先写方案,然后自己改改这、改改那再发给老板 各种黑前任,把前任留下的代码说成一坨屎 动不动就说和盖茨、开复、云哥、国庆、腾腾、彦宏等都互发过邮件,路子很野 以上班迟到为荣 聚餐从不主动买单 没有女朋友却说自己有很多女朋友 对父母不孝顺 超级技术前瞻..
使用 CSS 表达下你老婆说的话: 代码解析:1.老婆永远是对的。 2.如果老婆错了,请参考第一条。 网页在各个浏览器上的运行效果: 各大公司使用到的编程语言,JavaScript 才是第一语言啊: 使用 C 语言代码写出以下座位的情况: 客户虐我千百遍 我待客户如初恋: 您的浏览器不支持 video 标签。..
关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。:格式如下 assign LHS_target = RHS_expression ; LHS(left hand side) 指赋值操作的左侧,RHS(right hand side)指赋值操作的右侧。 assign 为关键词,任何已经声明 wire 变量的连续赋值语句都是以 assign 开头,例如:..
格式 Verilog 是区分大小写的。 格式自由,可以在一行内编写,也可跨多行编写。 每个语句必须以分号为结束符。空白符(换行、制表、空格)都没有实际的意义,在编译阶段可忽略。例如下面两中编程方式都是等效的。 不换行(不推荐) 实例 [mycode4 type='verilog'] wire [1:0] results ;assign results = (a == 1'b0) ? 2'b01 ..
关键词:case,选择器 case 语句是一种多路条件分支的形式,可以解决 if 语句中有多个条件选项时使用不方便的问题。 case 语句 case 语句格式如下: case(case_expr) condition1 : true_statement1 ; condition2 : true_statement2 ; …… defaul..
积分梳状滤波器(CIC,Cascaded Integrator Comb),一般用于数字下变频(DDC)和数字上变频(DUC)系统。CIC 滤波器结构简单,没有乘法器,只有加法器、积分器和寄存器,资源消耗少,运算速率高,可实现高速滤波,常用在输入采样率最高的第一级,在多速率信号处理系统中具有着广泛应用。 DDC 原理 DDC 工作原理 DDC 主要由本地振荡器(NCO) 、混频器、滤波器等组成,如下图所示。 DDC 将中频信号与振荡..
关键字:竞争,冒险,书写规范 产生原因 数字电路中,信号传输与状态变换时都会有一定的延时。 在组合逻辑电路中,不同路径的输入信号变化传输到同一点门级电路时,在时间上有先有后,这种先后所形成的时间差称为竞争(Competition)。 由于竞争的存在,输出信号需要经过一段时间才能达到期望状态,过渡时间内可能产生瞬间的错误输出,例如尖峰脉冲。这种现象被称为冒险(Hazard)。 竞争不一定有冒险,但冒险一定会有竞争。= 1000) $fi..
以反引号 ` 开始的某些标识符是 Verilog 系统编译指令。编译指令为 Verilog 代码的撰写、编译、调试等提供了极大的便利。 下面介绍下完整的 8 种编译指令,其中前 4 种使用频率较高。 `define, `undef 在编译阶段,`define 用于文本替换,类似于 C 语言中的 #define。 一旦 `define 指令被编译,其在整个编译过程中都会有效。例如,在一个文件中定义: `define DATA_DW ..
关键词:if,选择器 条件语句 条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。 条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。 条件语句使用结构说明如下: if (condition1) true_statement1 ; else if (condition2) true_statement2 ; else if (condition3) true_..
Verilog 最常用的 2 种数据类型就是线网(wire)与寄存器(reg),其余类型可以理解为这两种数据类型的扩展或辅助。 线网(wire) wire 类型表示硬件单元之间的物理连线,由其连接的器件输出端连续驱动。如果没有驱动元件连接到 wire 型变量,缺省值一般为 “Z”。举例如下: 实例 [mycode4 type='verilog'] wire interrupt ; wire fla..
DDS 原理 DDS(直接频率合成)技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真的抽样,将得到的数字信号存储在存储器中,并在时钟的控制下,通过数模转换,将数字量变成模拟信号的方法。 DDS 模块主要由相位累加器、查找表、DAC 转换器和低通滤波器组成,基本结构如下。 相位累加器,是 DDS 的核心组成部分,用于实现相位的累加,并输出相应的幅值。相位累加器由 M 位宽加法器和 M 位宽寄存器组成,通过时钟控制,..
关键词:deassign,force,release 过程连续赋值是过程赋值的一种。这种赋值语句能够替换其他所有 wire 或 reg 的赋值,改写了 wire 或 reg 型变量的当前值。 与过程赋值不同的是,过程连续赋值的表达式能被连续的驱动到 wire 或 reg 型变量中,即过程连续赋值发生作用时,右端表达式中任意操作数的变化都会引起过程连续赋值语句的重新执行。 过程连续性赋值主要有 2 种,assign-deassign 和 ..
关键词: defparam,参数,例化,ram 当一个模块被另一个模块引用例化时,高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块,而不用单独为只有参数不同的多个模块再新建文件。 参数覆盖有 2 种方式:1)使用关键字 defparam,2)带参数值模块例化。 defparam 语句 可以用关键字 defparam 通过模块层次调用的方法,来改写低层次模块的参数值。 例如对一个单口地址线和..
设计方法 Verilog 的设计多采用自上而下的设计方法(top-down)。即先定义顶层模块功能,进而分析要构成顶层模块的必要子模块;然后进一步对各个模块进行分解、设计,直到到达无法进一步分解的底层功能块。这样,可以把一个较大的系统,细化成多个小系统,从时间、工作量上分配给更多的人员去设计,从而提高了设计速度,缩短了开发周期。 设计流程 Verilog 的设计流程,一般包括以下几个步骤: 需求分析 工作人员需要对用户提出的功能..
除法器原理(定点) 和十进制除法类似,计算 27 除以 5 的过程如下所示: 除法运算过程如下: (1) 取被除数的高几位数据,位宽和除数相同(实例中是 3bit 数据)。 (2) 将被除数高位数据与除数作比较,如果前者不小于后者,则可得到对应位的商为 1,两者做差得到第一步的余数;否则得到对应的商为 0,将前者直接作为余数。 (3) 将上一步中的余数与被除数剩余最高位 1bit 数据拼接成新的数据,然后再和除数做比较。可以得到..
表达式 表达式由操作符和操作数构成,其目的是根据操作符的意义得到一个计算结果。表达式可以在出现数值的任何地方使用。例如: 实例 [mycode4 type='verilog'] a^b ; //a与b进行异或操作 address[9:0] + 10'b1 ; //地址累加 flag1 && flag2 ; //逻辑与操作 [/mycode4] 操作数 操作数可以是任意..
FFT(Fast Fourier Transform),快速傅立叶变换,是一种 DFT(离散傅里叶变换)的高效算法。在以时频变换分析为基础的数字处理方法中,有着不可替代的作用。 FFT 原理 公式推导 DFT 的运算公式为: 其中, 将离散傅里叶变换公式拆分成奇偶项,则前 N/2 个点可以表示为: 同理,后 N/2 个点可以表示为: 由此可知,后 N/2 个点的值完全可以通过计算前 N/2 个点时的中间过程值确定。对 A[k]..
FIR(Finite Impulse Response)滤波器是一种有限长单位冲激响应滤波器,又称为非递归型滤波器。FIR 滤波器具有严格的线性相频特性,同时其单位响应是有限长的,因而是稳定的系统,在数字通信、图像处理等领域都有着广泛的应用。 FIR 滤波器原理 FIR 滤波器是有限长单位冲击响应滤波器。直接型结构如下: FIR 滤波器本质上就是输入信号与单位冲击响应函数的卷积,表达式如下: FIR 滤波器有如下几个特性: (1..
关键词:状态机,售卖机 有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和 RTL 级有着广泛的应用。 状态机类型 Verilog 中状态机主要用于同步时序逻辑的设计,能够在有限个状态之间按一定要求和规律切换时序电路的状态。状态的切换方向不但取决于各个输入值,还取决于当前所..