草庐IT

verilog-tutorial

全部标签

Verilog寄存器设计

任务描述本关任务:编写一个异步清零带写使能端的32位寄存器。相关知识CPU内的隐含寄存器是一些特殊的寄存器,对用户是不可用的,专供控制器使用。在指令执行过程中,由硬件自动控制这些寄存器。包括程序计数器PC、指令寄存器IR、程序状态字PSW、存储器地址寄存器MAR、存储器数据寄存器MDR等。其中:指令寄存器IR:用来存放当前正在执行的指令代码。程序计数器PC:也称为指令指针,用来指示将要执行的下一条指令在内存中的地址。寄存器的功能寄存器是计算机中实现数据存放部件,主要完成数据的临时存储。异步清零带写使能端的32位寄存器能实现异步(不受时钟的控制)清零功能。当写使能输入端e=1,在时钟信号的上升沿

Verilog中“X”和“Z”状态和 进制表示

VerilogHDL有4种基本的数值(数据状态):0:逻辑“0”或“假”;1:逻辑“1”或“真”;x:未知;z:高阻其中,x和z不区分大小写。进行FPGA仿真时,出现的“Z”,指未对该单比特信号处理,该信号处于悬空状态或不定态,若不符合预期,应回到程序中检查,是否对该信号进行了操作。同理,“X”是指未对该多比特信号处理。Verilog中的数字就是由以上四类基本数值表示,Verilog中的数字类型分为两种,分别为整数型和实数型,以及非数字类型--字符串型。下划线符号“_”可以随意用在整数和实数中,没有实际意义,只为了提高可读性。如:24等效于2_4。程序编写或仿真过程中,均需注意进制表示,同一数

基于Verilog 语言开发的FPGA密码锁工程

基于Verilog语言开发的FPGA密码锁工程。通过矩阵键盘输入按键值。输入12修改密码,13清除密码,可以修改原来默认的密码,修改时首先要输入当前密码进行验证,正确后才能更新当前密码,否则修改不成功。修改结束后按键15,确认修改成功。也直接使用默认密码作为最终密码使用。按键14,进入开锁阶段之后,输入密码进行开锁。有两个版本,分别为Quartus和vivado两个版本。工程均带有完整的仿真模块。前两张图为一个简单文档说明。最后两张图为quartus的仿真图。ID:49200643325544397

扰码器原理详解及verilog实现

什么是扰码    扰码就是对原始的用户数据进行扰乱,得到随机化的用户数据。连续扰码两次就能得到原始数据,通常是发送电路在发送数据时先对数据进行随机扰乱,接收电路使用相同的扰乱算法就可以重新恢复出原始的数据。如图所示:扰码器的优点和作用    扰码器产生伪随机的比特序列,它和输入的数据进行异或(相加模二),从而实现对输入串行数据的随机化,伪随机序列也是周期重复的,周期长度取决于反馈多项式中触发器的级数和所选择的多项式。接收电路本地有一个和发送电路相同的伪随机序列产生器,它产生的数据和接收数据进行异或,可以恢复出发送端原始的串行数据。        反馈多项式通常是f(x)=x^n+x^(n-1)

Verilog 学习笔记

VerilogHDL的基本语法模块•VerilogHDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间。每个模块实现特定的功能。模块是可以进行层次嵌套的。正因为如此,才可以将大型的数字电路设计分割成不同的小模块来实现特定的功能,最后通过顶层模块调用子模块来实现整体功能。•每个模块要进行端口定义,并说明输入输出口,然后对模块的功能进行行为逻辑描述。•VerilogHDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分写多行。•除了endmodule语句外,每个语句和数据定义的最后必须有分号。•可以用/*.....*/和//.......对Veril

Verilog实现正弦波、三角波、方波、锯齿波的输出

1、理论知识实现方法:将数字量转换为模拟量,根据输出数字量的大小转换为模拟量以实现信号幅值的变化。具体思路:提前声明一个ROMIP核,将正弦波、三角板、方波和锯齿波的数字量写入进去,或者也可以自己用Verilog写一个ROM,ROM作为只读的一个存储器,在声明的时候需要提前将数据写入到ROM中,然后给定其一个地址,便会输出该地址所对应的数据以实现信号波形的输出。根据思路进行举例说明:若要实现一个正弦波的输出,提前将ROM的深度定义为1024,宽度定义为10位宽。则ROM中有1024个数据,每个数据的位宽为10位二进制,这1024个数据代表了一个正弦波。由于位宽为10位,则输出幅值的最大值为2^

Verilog实现正弦波、三角波、方波、锯齿波的输出

1、理论知识实现方法:将数字量转换为模拟量,根据输出数字量的大小转换为模拟量以实现信号幅值的变化。具体思路:提前声明一个ROMIP核,将正弦波、三角板、方波和锯齿波的数字量写入进去,或者也可以自己用Verilog写一个ROM,ROM作为只读的一个存储器,在声明的时候需要提前将数据写入到ROM中,然后给定其一个地址,便会输出该地址所对应的数据以实现信号波形的输出。根据思路进行举例说明:若要实现一个正弦波的输出,提前将ROM的深度定义为1024,宽度定义为10位宽。则ROM中有1024个数据,每个数据的位宽为10位二进制,这1024个数据代表了一个正弦波。由于位宽为10位,则输出幅值的最大值为2^

吃透Chisel语言.10.Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程

Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程上一篇文章我们提到了怎么用sbt构建Chisel项目并运行Chisel代码,但是毕竟还是在电脑上运行的。而在实践中,我们写的Chisel代码最终应该综合到FPGA或ASIC上,所以必须把Chisel翻译到一个综合工具能处理的硬件描述语言,比如Verilog。那怎么用Chisel代码生成Verilog代码呢?Chisel的开发流程又是怎样的呢?这篇文章来学习一下。Chisel生成Verilog代码Chisel是可以生成可综合的Verilog代码的,把生成Verilog的代码放到一个应用入口里面就可

吃透Chisel语言.10.Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程

Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程上一篇文章我们提到了怎么用sbt构建Chisel项目并运行Chisel代码,但是毕竟还是在电脑上运行的。而在实践中,我们写的Chisel代码最终应该综合到FPGA或ASIC上,所以必须把Chisel翻译到一个综合工具能处理的硬件描述语言,比如Verilog。那怎么用Chisel代码生成Verilog代码呢?Chisel的开发流程又是怎样的呢?这篇文章来学习一下。Chisel生成Verilog代码Chisel是可以生成可综合的Verilog代码的,把生成Verilog的代码放到一个应用入口里面就可

一起学习用Verilog在FPGA上实现CNN----(八)integrationFC设计

1integrationFC设计LeNet-5网络结构全连接部分如图所示,该部分有2个全连接层,1个TanH激活层,1个SoftMax激活层:图片来自附带的技术文档《HardwareDocumentation》integrationFC部分原理图,如图所示,图中W1和W2分别是存储全连接层FC1和全连接层FC2的权重:全连接层FC1输入神经元个数为3840/32=120个,输出神经元个数为2688/32=84个,原理图如图所示:Tanh激活层的输入输出位宽均为32位,原理图如图所示:全连接层FC2输入神经元个数为2688/32=84个,输出神经元个数为320/32=10个,原理图如图所示:SM