草庐IT

【数字IC/FPGA】Verilog实现排序算法

方法先设计2输入的比较器,输入为A,B,输出为MAX(A,B),MIN(A,B)再根据若干二输入比较器,设计四输入的排序算法:如下图所示,AB,CD分别经过2输入比较器,得到B,A,C,D,满足B>A,C>D,则易知,B=MAX(C,B)即为四个数中的最大值,D=MIN(A,D)为四个数中的最小值,至于剩下的A,C,进行比较后,分别为第二大和第三大的数。再根据4输入排序器设计8输入排序器,如下图所示,经过第一轮排序后,有B>C>A>DH>F>E>G再将BCHF进行排序,可得到8个数中的最大值H和次大值B,对ADEG进行排序,可得到8个数中的最小值G和次小值D,最后,对第二轮输出的C,F,A,E

VSCode关联VIVADO编辑Verilog

插件系列文章目录:(1)modelsim安装使用及Vivado关联(2)VSCode关联VIVADO编辑Verilog(3)Modelsim观察波形–基础操作(4)Quartus联合ModelSim仿真及测试文章目录前言一、VSCode安装二、VsCode配置之verilog1.更换Vivado自带文本编辑器第一步:打开Vivado再Tool菜单中打开Settings第二步:在Settings里更换默认的文本编辑器2、安装Verilog插件2.0Chinese插件2.1VerilogHDL/SystemVerilog2.1.1在VsCode扩展商店搜索verilog2.1.2vivado使用x

Verilog语言-Quartus II 错误解决

1、弹窗:Areyousurewanttofinish?原因:testbench文件里面有下列语句:$finish;(表示时间到达1000ns就停止仿真)initialbeginforeverbegin#100;//$display("---gyc---%d",$time);if($time>=1000)begin$finish;endendend注意:选择否,才能保持仿真软件打开看波形,选择是会关闭软件。2、doesnothaveatimeunit/timeprecisionspecificationineffect,butothermodulesdo解决:testbench加上设计文件的引

Verilog语言-Quartus II 错误解决

1、弹窗:Areyousurewanttofinish?原因:testbench文件里面有下列语句:$finish;(表示时间到达1000ns就停止仿真)initialbeginforeverbegin#100;//$display("---gyc---%d",$time);if($time>=1000)begin$finish;endendend注意:选择否,才能保持仿真软件打开看波形,选择是会关闭软件。2、doesnothaveatimeunit/timeprecisionspecificationineffect,butothermodulesdo解决:testbench加上设计文件的引

FPGA纯verilog实现10G UDP协议栈,XGMII接口UltraScale GTY驱动,提供工程源码和技术支持

目录1、前言2、我这里已有的UDP方案3、该UDP协议栈性能4、详细设计方案SFPSGMII收发接口模块AXISFIFOUDP协议栈UltraScaleFPGAsTransceiversWizardGTY5、vivado工程6、上板调试验证并演示准备工作查看ARPUDP数据回环测试7、福利:工程代码的获取1、前言目前网上的fpga实现udp基本生态如下:1:verilog编写的udp收发器,但中间的FIFO或者RAM等调用了IP,或者不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,

【使用verilog、五级流水和MIPS指令集设计CPU】

内容大概描述设计思想设计内容设计处理器的结构和方法处理器的操作过程代码测试部分总结参考文献备注大概描述参考《自己动手写CPU》这本书,这本书算是手把手教学写CPU,比较适合初学者。这里完成五级流水结构的处理器,实现70条左右的指令,基本实现全部整数指令,开发工具是Vivado。设计思想设计的处理器是五级流水处理器,取指,译码,执行,访存,回写。(1)取指:取出指令存储器中的指令,PC值递增,准备取下一条指令。(2)译码:对指令进行译码,依据译码结果,从32个通用寄存器中取出源操作数,有的指令要求两个源操作数都是寄存器的值,比如or指令,有的指令要求其中一个源操作数是指令中立即数的扩展,比如or

【使用verilog、五级流水和MIPS指令集设计CPU】

内容大概描述设计思想设计内容设计处理器的结构和方法处理器的操作过程代码测试部分总结参考文献备注大概描述参考《自己动手写CPU》这本书,这本书算是手把手教学写CPU,比较适合初学者。这里完成五级流水结构的处理器,实现70条左右的指令,基本实现全部整数指令,开发工具是Vivado。设计思想设计的处理器是五级流水处理器,取指,译码,执行,访存,回写。(1)取指:取出指令存储器中的指令,PC值递增,准备取下一条指令。(2)译码:对指令进行译码,依据译码结果,从32个通用寄存器中取出源操作数,有的指令要求两个源操作数都是寄存器的值,比如or指令,有的指令要求其中一个源操作数是指令中立即数的扩展,比如or

m基于FPGA的BPSK调制解调通信系统verilog实现,包含testbench,包含载波同步

目录1.算法仿真效果2.算法涉及理论知识概要3.verilog核心程序4.完整算法代码文件1.算法仿真效果vivado2019.2仿真结果如下:    对比没载波同步和有载波同步的仿真效果,我们可以看到,当不存在载波同步时,数据的包络会有一个缓慢的类正弦变换,这是由于存在频偏导致的。而当加入载波同步之后,数据的包络会存在少量起伏,但数据反转的情况已经没有了,说明频偏得到了补偿。 2.算法涉及理论知识概要    BPSK(Binary Phase Shift Keying)调制是一种基本的数字调制方式,它将数字信号转换为一系列的相位变化,其中0和1分别对应于相位为0和π的两个状态。BPSK调制的

Verilog task使用说明

任务与函数的区别和函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算,而任务更像一个过程,不仅能完成函数的功能,还可以包含时序控制逻辑。下面对任务与函数的区别进行概括:比较点函数任务输入函数至少有一个输入,端口声明不能包含inout型任务可以没有或者有多个输入,且端口声明可以为inout型输出函数没有输出任务可以没有或者有多个输出返回值函数至少有一个返回值任务没有返回值仿真时刻函数总在零时刻就开始执行任务可以在非零时刻执行时序逻辑函数不能包含任何时序控制逻辑任务不能出现always语句,但可以包含其他时序控制

Verilog task使用说明

任务与函数的区别和函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算,而任务更像一个过程,不仅能完成函数的功能,还可以包含时序控制逻辑。下面对任务与函数的区别进行概括:比较点函数任务输入函数至少有一个输入,端口声明不能包含inout型任务可以没有或者有多个输入,且端口声明可以为inout型输出函数没有输出任务可以没有或者有多个输出返回值函数至少有一个返回值任务没有返回值仿真时刻函数总在零时刻就开始执行任务可以在非零时刻执行时序逻辑函数不能包含任何时序控制逻辑任务不能出现always语句,但可以包含其他时序控制