
FPGA/Verilog
文章平均质量分 55
MinJohnson
Improve!
展开
-
超大规模集成电路设计----FPGA时序模型及FSM的设计(八)
tSYS = 最大工作频率。原创 2023-12-07 16:13:50 · 1005 阅读 · 0 评论 -
超大规模集成电路设计----基于阵列的可编程逻辑(七)
1980s ~:◆ Programmable logic array (PLAs),◆ Standard cells,◆ Mac原创 2023-12-07 11:48:29 · 748 阅读 · 0 评论 -
HDLBits-Modules 题解【Verilog模块例化】(中文翻译+英文原文,可顺带学习英文)
HDLBits题解,Verilog中模块例化的两种方法原创 2023-04-11 23:54:13 · 1235 阅读 · 1 评论 -
FPGA高级结构设计(二):面积结构设计
面积结构设计折叠流水线流水线是需要寄存中间结果的,这会带来寄存器的消耗,也就是会导致面积增大。基于控制逻辑的复用前提是复用的逻辑要比控制逻辑大资源共享在全局搜索相似功能的计数器逻辑,将其拿到全局中,供其他模块使用复位对面积的影响对于一些FPGA来说,不正确的复位反而会增大逻辑门的消耗,比如一些没有复位置位的寄存器,要是强制让其复位置位,只会让其他逻辑结构来构成复位和置位,另外对于一些RAM,移位寄存器同理,不正确的复位可能会增加面积。但是于此同时,我们可以利用复位和置位来减少面积,比如利用原创 2022-01-05 16:45:03 · 443 阅读 · 0 评论 -
FPGA高级设计(一):速度结构设计
高速度结构设计流量每秒(时钟)处理的数据量高流量设计:增加流水线结构(并不一定降低时滞)时滞数据输入到处理完输出所经过的时间低时滞设计:去除流水线寄存器时序时序元件之间的逻辑延时满足时序:关键路径的延时小于时钟周期此处认为时钟偏移是滞后原本的时钟的满足时序的设计:并行结构添加寄存器层次展平逻辑结构寄存器平衡重新安排路径...原创 2022-01-05 16:34:53 · 342 阅读 · 0 评论 -
always @(*) 中‘*’所代表的意思
结论①在always块中建立组合逻辑模型时,如果敏感列表没有完成,在仿真中将会以锁存器的形式出现,但是在综合中将列出所有的敏感信号列表,从而建立相应的组合逻辑(可能也是有锁存器的)。②@*只能对always块中的信号 敏感,对外部always块中的函数引用的信号不敏感。③组合逻辑中要对RAM中的每个元素都敏感时,可以使用@*,也可以用@(addr,men[addr])④敏感列表中存在有操作时,对于操作项而言,不会对操作数敏感,而是对操作后的结果敏感,所以不在敏感列表中进行操作。实验在绝大多数变成转载 2021-10-14 22:30:42 · 9576 阅读 · 0 评论 -
怎么独立使用Modelsim进行工程仿真
https://www.cnblogs.com/yuphone/archive/2010/08/30/1812932.htmlhttps://blog.csdn.net/hucc0706/article/details/79273788转载 2021-10-14 22:20:08 · 241 阅读 · 0 评论 -
全国大学生电子设计竞赛2017年E题 自适应滤波器
本题拟采用实时采样的方式来进行自适应滤波。学过数字信号处理都知道,频率分辨率是采样率除以采样点数,而这道题提高部分要求10Hz的分辨率,经过前期的分析,我们采用采样率为4MHz,那么就是说我们需要采样到至少400k个点才能进行一次自适应,而采样这么多点需要的时间是1/10 = 0.1s,所以每进行一次自适应就需要花费0.1s的时间。而提高部分又要求要在1s内完成,所以我们大概可以进行7到8次的滤波。经过matlab仿真不断移相噪声相减得到的相减波形能量如下结果噪声是正弦波时,移相的能量变化图噪原创 2021-09-30 10:13:45 · 4666 阅读 · 2 评论 -
Verilog状态机
什么是状态机我个人认为状态机就是为了解决FPGA顺序执行任务这个问题而产生的,每一步设置成一个状态,满足条件就进行下一步。一般状态机写成三段比较好理解,所以这里我就不讨论一段式和二段式了,只讨论三段式。第一段状态机用来描述状态跳转到下一步(-----------------------------同步时序电路-----------------------------)always @(posedge clk or negedge rst_n) begin if(!rst_n原创 2021-09-08 20:56:26 · 494 阅读 · 0 评论 -
SPI代码详解FPGA-verilog部分(FPGA+STM32)(三)
声明:本篇文章面向在已对SPI的四种时序有所了解的人我们采用SPI3模式以及将FPGA作从机,STM32作主机的方式讲解,在STM32控制部分采用的是半双工模式,但其实半双工与全双工区别不大,稍加修改即可本文是FPGA通过SPI接收的数据做出应答的模块,比如改变ADC采样率,将ADC采集的数据放在RAM中和从RAM中取出再发送给单片机module samplingCtrl ( input clk, input rstn, input [31:0]原创 2021-08-28 15:10:52 · 1434 阅读 · 1 评论 -
SPI代码详解FPGA-verilog部分(FPGA+STM32)(二)
声明:本篇文章面向在已对SPI的四种时序有所了解的人我们采用SPI3模式以及将FPGA作从机,STM32作主机的方式讲解,在STM32控制部分采用的是半双工模式,但其实半双工与全双工区别不大,稍加修改即可本片文章是接续上篇文章的,如果未浏览上一篇文章的,可以在此跳转SPI代码详解FPGA-verilog部分(FPGA+STM32)(一)本部分代码相当于对SPI模块的一个驱动,从SPI模块中进出的数据都要经过spi_mp 这个模块这一层壳模块工作流程:单片机先拉低cs_cmd,发送的命令dcmd原创 2021-08-28 11:24:23 · 1292 阅读 · 0 评论 -
SPI代码详解FPGA-verilog部分(FPGA+STM32)(一)
声明:本篇文章面向在已对SPI的四种时序有所了解的人我们采用SPI3模式以及将FPGA作从机,STM32作主机的方式讲解,在STM32控制部分采用的是半双工模式,但其实半双工与全双工区别不大,稍加修改即可本文章属于SPI的升级版,将原本的片选线CS_N再多加一根,变成spi_cs_cmd和spi_cs_data,当spi_cs_cmd拉低的时候表示传送的是命令(命令只由单片机发送),当cs_data拉低的时候表示传送的是数据(数据可以是FPGA传给单片机的,也可以是单片机传给FPGA的)mo原创 2021-08-28 11:02:34 · 1565 阅读 · 0 评论 -
Quartus使用Testbench方法(自动生成模板后的操作)
Quartus ii版本是13.01,原工程文件名为ex,Quartus要求最顶层.v文件名要与工程名相同,因此顶层.v文件名为ex.v==== Step1 ====Processing -> Start -> Start Testbench Template Writer生成针对工程的Testbench模板文件。使用File -> Open打开在工程的simulation目录下的Testbench文件ex.vt,其内容如下:`timescale 1 ps/ 1 psmodule转载 2020-08-28 15:16:07 · 10926 阅读 · 0 评论 -
Verilog初学者小圣经
虽然有些杂,但是非常好1、不使用初始化语句;2、不使用延时语句;3、不使用循环次数不确定的语句,如:forever,while等;4、尽量采用同步方式设计电路;5、尽量采用行为语句完成设计;6、always过程块描述组合逻辑,应在敏感信号表中列出所有的输入信号;7、所有的内部寄存器都应该可以被复位;8、用户自定义原件(UDP元件)是不能被综合的。一:基本Verilog中的变量有线网类型和寄存器类型。线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器,还有可能被优化掉。原创 2020-08-24 11:39:03 · 1885 阅读 · 0 评论 -
HDLBits——Module add
这道题难在调用它给我们的模块,属实把我给坑惨了,其实题目本身不难,理解题目意思才是关键,如果硬说哪里要注意,就是我们使用名称关联例化模块的时候,可以把不使用的管脚不进行例化,下面我把我的代码贴出来。module top_module( input [31:0] a, input [31:0] b, output [31:0] sum); wire[15:0] hi; wire[15:0] lo; wire temp; add16 instance.原创 2020-08-23 17:34:54 · 967 阅读 · 0 评论 -
HDLBits——Module shift8(Module and Vectors)端口为多位的元件例化过程
正确解答如下module top_module ( input clk, input [7:0] d, input [1:0] sel, output [7:0] q ); wire[7:0] wir1,wir2,wir3; my_dff8 instance1(.d(d),.clk(clk),.q(wir1)); my_dff8 instance2(.d(wir1),.clk(clk),.q(wir2)); my_dff8 ins.原创 2020-08-23 16:23:56 · 1506 阅读 · 0 评论 -
HDLBits——Module shift
module top_module ( input clk, input d, output q ); reg my_dff; wire wir1,wir2; my_dff instance1(.clk(clk),.d(d),.q(wir1)); my_dff instance2(.clk(clk),.d(wir1),.q(wir2)); my_dff instance3(.clk(clk),.d(wir2),.q(q));endmodule本题关键在于建立.原创 2020-08-23 10:55:38 · 1117 阅读 · 2 评论 -
HDLBits——Module name(根据名称例化模块)
正确解答如下module top_module ( input a, input b, input c, input d, output out1, output out2); mod_a instance1(.out1(out1),.out2(out2),.in1(a),.in2(b),.in3(c),.in4(d));endmodule原创 2020-08-23 09:35:01 · 470 阅读 · 1 评论 -
HDLBits——Module position(根据位置来例化)
本题是为前一篇博文里Module的其中一种方法单独出的一道题目正确解法如下:module top_module ( input a, input b, input c, input d, output out1, output out2); mod_a instance1(out1,out2,a,b,c,d);endmodule错误解法如下module top_module ( input a, input b.原创 2020-08-23 09:28:32 · 349 阅读 · 0 评论 -
HDLBits——Module
本人持续更新HDLBits其他题目,详细讲解我们编程时会遇到的各种错误,若有兴趣可以移步我的博客中心浏览本人的其他文章,感谢赏光!原题如下这道题的本质就是内部的module 和top_module的连接问题。众所周知,信号连接有两种方式,一种是根据位置来摆放,一种是根据名称来直接连接而与位置无关,接下来我就用代码来帮大家解释解释。假如我们有一个模块(instance) mod_a(output out,input a,input b) 而我有一个顶层文件top(input in1,inpu原创 2020-08-22 21:46:42 · 647 阅读 · 0 评论 -
HDLBits——Vecotor Reversal
这道题有两种解法1、module top_module( input [7:0] in, output [7:0] out);assign out = {in[0],in[1],in[2],in[3],in[4],in[5],in[6],in[7]};endmodule2、module top_module( input [7:0] in, output [7:0] out); always@* begin integer i; for(i.原创 2020-08-22 18:34:45 · 205 阅读 · 0 评论 -
HDLBits——Replication operator位扩展 (非常有用的一道题目)
A Bit of PracticeOne common place to see a replication operator is when sign-extending a smaller number to a larger one, while preserving its signed value. This is done by replicating the sign bit (the most significant bit) of the smaller number to the le原创 2020-08-22 11:33:21 · 1713 阅读 · 0 评论 -
HDLBits——Vectorgates(总线门的处理)
Build a circuit that has two 3-bit inputs that computes the bitwise-OR of the two vectors, the logical-OR of the two vectors, and the inverse (NOT) of both vectors. Place the inverse of b in the upper half of out_not (i.e., bits [5:3]), and the inverse of原创 2020-08-21 21:09:33 · 1340 阅读 · 2 评论 -
HDLBits——Vectors
Vectors are used to group related signals using one name to make it more convenient to manipulate. For example, wire [7:0] w; declares an 8-bit vector named w that is equivalent to having 8 separate wires.Contents1 Declaring Vectors1.1 Implicit nets1.2原创 2020-08-21 12:53:23 · 1156 阅读 · 0 评论 -
HDLBits刷题网站错误总结(持续更新)
1、assign 语句是不能用非阻塞语句赋值的 ,只有reg才可以用非阻塞语句赋值,但是assign既可以给wire型变量赋值也可以给reg型变量赋值2、异或和同或的一个简单辨析方法,一般我们都是先学习异或,而且异或用的比较多,所以异或是^,同或是异或的非,所以同或是~ ^。...原创 2020-08-20 20:26:29 · 2907 阅读 · 0 评论