随笔分类 -  Verilog与FPGA学习

FPGA的学习过程及Verilog编程经验
摘要:波形文件如下: 阅读全文
posted @ 2018-08-06 19:51 少年π 阅读(3594) 评论(1) 推荐(0)
摘要:边沿触发和电平触发基本就是触发器和锁存器的区别: 触发器是边沿触发,只有当时钟上升(或下降)的一瞬间,触发器会读取并锁存输入信号。输出信号仅在时钟信号上升(或下降)的一瞬间会发生变化。 锁存器是电平触发,只要使能(enable)信号处于高电平(或低电平),输出就会随着输入信号变化,直到使能信号变为低 阅读全文
posted @ 2018-07-17 19:49 少年π 阅读(1202) 评论(0) 推荐(0)
摘要:计算机中的数据,往往给我们造成了一些假象:存在源码,反码,补码;定点数,浮点数;这些概念。但是其实脱离了操作系统的概念,仅仅存在电路硬件的时候,并不存在这些钙这些数,准确而言,这些表示都是计算机算法的表示形式,而算法是为了解决实际问题被人定义出来的。 那么,准确的电路中的数是是什么呢:计数器(一种从 阅读全文
posted @ 2018-05-18 10:58 少年π 阅读(207) 评论(0) 推荐(0)
摘要:在Verilog程序中,不可能将所有的代码放在一个文件里面,不同功能的模块封装在一个文件里面,但最终我们要生成最终的系统电路,必须将这些子模块生成一个顶层模块,那么如何生成这样的顶层模块呢? 给出一个实例, 上图中提出了这样一个问题:如何将三个子模块接成一个顶层模块。这三个子模块分别完成了:与,或, 阅读全文
posted @ 2018-05-07 20:47 少年π 阅读(7234) 评论(0) 推荐(0)
摘要:先从下面一小段代码入手,说明其中的道理 上面这段代码的作用是,使得变量 r_freq_cnt能够循环往复从800逐渐+1变化到1100,再逐渐-1变化到800,循环往复,类似于随着时间的推移生成了一个三角波。核心在于,如何在r_freq_cnt=1099的时候,导致使得r_freq_cnt=r_fr 阅读全文
posted @ 2018-05-05 21:02 少年π 阅读(667) 评论(0) 推荐(0)
摘要:上面是一段关于CORDIC_IP测试文件,用于计算给定角度的sin值和cos值,关于数值表示规则在此不再重复,仅仅说明以下3点: 1 数采用原码,反码,补码,本身并没有正确与否之分(这一点很重要,我们不能认为只有补码的表示是正确的),有的只是适用场合,采用补码的方式能够使得使得加法和减法变得统一,而 阅读全文
posted @ 2018-04-10 23:36 少年π 阅读(367) 评论(0) 推荐(0)
摘要:在写CORIC算法实现代码的时候,遇到了小数问题如下: 、 第31行的代码如下: 这说明了写成小数形式,不会通过编译器的检查(暂且叫做编译器),编译器无法识别这种小数的表示方法。但我们又确实需要进行小数的计算,比如加法的; 比如1.4567+2.34789。编译都无法编译,那么该如何计算呢? 我们知 阅读全文
posted @ 2018-04-07 23:59 少年π 阅读(576) 评论(0) 推荐(0)
摘要:1. 关于函数function调用,总结两个要点: 1. 函数调用一般产生一个值,这个值被赋值给某个变量 2. 函数所返回的值只能是一个,不可以是多个,不能像C语言中采用指针的方式返回多个值。因此,如果想产生多个结果则需要采用别的方式,实际上就是任务: 下面给出一段具体的代码(虽然很简单),体会函数 阅读全文
posted @ 2017-12-06 21:27 少年π 阅读(2035) 评论(0) 推荐(0)
摘要:2017-12-01 在Verilog语言中,赋值语句经常使用,阻塞赋值和非阻塞赋值经常带给我们很多困扰。在此讨论两种赋值方式的差异性。 首先根据表面含义深刻理解阻塞和非阻塞: 阻塞:在进程语句块中(initial或者always或者其他),当前赋值语句的执行阻塞了后面语句的执行。即后面语句的赋值需 阅读全文
posted @ 2017-12-01 20:00 少年π 阅读(1562) 评论(0) 推荐(0)