hdlbits
文章平均质量分 72
Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
Shining0596
星空浩瀚无比,探索永无止境
展开
-
Verilog之Module cseladd
在本练习中,为您提供与前一练习相同的模块 add16,它将两个 16 位数字与进位相加,并产生一个进位和 16 位和。您必须使用您自己的 16 位 2 对 1 多路复用器来实例化其中的三个以构建进位选择加法器。...原创 2022-08-19 02:59:02 · 414 阅读 · 0 评论 -
Verilog学习之Module add
一个 add16 模块计算加法结果的低 16 位,而第二个 add16 模块在接收到第一个加法器的进位后计算结果的高 16 位。 32 位加法器不需要处理进位(假设为 0)或进位(忽略),但内部模块需要才能正常工作。(换句话说,add16 模块执行 16 位 a + b + cin,而您的模块执行 32 位 a + b)。......原创 2022-08-15 17:25:44 · 1487 阅读 · 0 评论 -
Verilog学习之Module shift8:Module and vectors模块和向量
模块端口不再只是单个引脚,我们现在有带有向量作为端口的模块,您将连接线向量而不是普通线。与 Verilog 中的其他任何地方一样,端口的向量长度不必与连接到它的导线相匹配,但这会导致向量的零填充或截断。...原创 2022-08-15 16:44:37 · 910 阅读 · 0 评论 -
Verilog之Three modules:Module shift模块移位
my_dffclk您将获得一个带有两个输入和一个输出的模块 my_dff(实现 D 触发器)。将其中三个实例化,然后将它们链接在一起以制成长度为 3 的移位寄存器。clk 端口需要连接到所有实例。请注意,要建立内部连接,您需要声明一些连线。命名你的连线和模块实例时要小心:名称必须是唯一的。...原创 2022-08-15 15:52:44 · 591 阅读 · 0 评论 -
Verilog之Module name:Connection ports by name模块名称
mod_aby name这个问题与模块类似。您将获得一个名为 mod_a 的模块,该模块按某种顺序具有 2 个输出和 4 个输入。原创 2022-08-15 15:33:55 · 653 阅读 · 0 评论 -
Verilog之Module pos:Connecting ports by position模块位置
mod_aout1,out2,a,b,c, andd这个问题与上一个(模块)类似。您将获得一个名为 mod_a 的模块,该模块按顺序具有 2 个输出和 4 个输入。您必须按位置将 6 个端口按顺序连接到顶层模块的端口 out1、out2、a、b、c 和 d。...原创 2022-08-15 15:18:54 · 565 阅读 · 0 评论 -
Verilog之Module模块
到目前为止,一个模块,它是一个通过输入和输出端口与其外部交互的电路。更大、更复杂的电路是通过将更大的模块从更小的模块和连接在一起的其他部分(例如分配语句和 always 块)组成的来构建的。这形成了一个层次结构,因为模块可以包含其他模块的实例。instancemod_ain1,in2, andouta,b, andoutmod_a下图显示了一个带有子模块的非常简单的电路。...原创 2022-08-15 00:21:26 · 4717 阅读 · 0 评论 -
Verilog学习之Vector5:More replication
给定五个 1 位信号(a、b、c、d 和 e),计算 25 位输出向量中的所有 25 个成对的一位比较。如果被比较的两位相等,则输出应为 1。...如图所示,使用复制和连接运算符可以更轻松地完成此操作。顶部向量是每个输入的 5 次重复的串联底部向量是 5 个输入的串联的 5 次重复。...原创 2022-08-14 18:53:05 · 524 阅读 · 0 评论 -
Verilog学习之Vector4:Replication operator
The num必须是常数,且被复制num次连接运算符允许将向量连接在一起以形成更大的向量。但有时您希望将同一事物多次连接在一起,并且执行诸如 assign a = {b,b,b,b,b,b};之类的操作仍然很乏味。复制运算符允许重复一个向量并将它们连接在一起:vectorbynumtimes.numExamples:两个大括号都是必须的。...原创 2022-08-14 18:35:01 · 520 阅读 · 0 评论 -
Verilog学习之Vector3:Vector concatenation operator
部分选择用于选择向量的部分。连接运算符 {a,b,c} 用于通过将向量的较小部分连接在一起来创建更大的向量。连接需要知道每个组件的宽度(或者你怎么知道结果的长度?)。因此,{1, 2, 3} 是非法的,并导致错误消息:串联中不允许使用未调整大小的常量。连接运算符可用于赋值的左侧和右侧。// Swap two bytes. Right side and left side are both 16-bit vectors.交换两个字节。右侧和左侧都是 16 位向量。连接符用于赋值语句左侧。...原创 2022-08-14 16:49:51 · 2182 阅读 · 0 评论 -
Verilog学习之Four-input gates
构建一个具有四个输入的组合电路,in[3:0]。有3个输出:out_and:4 输入与门的输出。out_or:4 输入或门的输出。out_xor:4 输入异或门的输出。要查看 AND、OR 和 XOR 运算符,请参阅 andgate、norgate 和 xnorgate。...原创 2022-08-14 15:40:43 · 1529 阅读 · 0 评论 -
Verilog学习之Bitwise operators:Vectorgates
构建一个具有两个 3 位输入的电路,用于计算两个向量的按位或、两个向量的逻辑或以及两个向量的逆 (NOT)。将 b 的倒数放在 out_not 的上半部分(即位 [5:3]),将 a 的倒数放在下半部分。bout_nota构建一个具有两个 3 位输入的电路,用于计算两个向量的按位或、两个向量的逻辑或以及两个向量的逆 (NOT)。将 b 的倒数放在 out_not 的上半部分(即位 [5:3]),将 a 的倒数放在下半部分。...原创 2022-08-14 15:05:49 · 1978 阅读 · 1 评论 -
Verilog之Vector part select :Vector2
byte一个 32 位向量可以被视为包含 4 个字节(位 [31:24]、[23:16] 等)。构建一个将反转 4 字节字的字节顺序的电路。当需要交换一条数据的字节顺序时,通常会使用此操作,例如在小端 x86 系统和许多 Internet 协议中使用的大端格式之间。.........原创 2022-08-14 14:45:27 · 436 阅读 · 0 评论 -
Verilog之向量Vector1
向量用于使用一个名称对相关信号进行分组,以便于操作。例如,wire [7:0] w;声明一个名为 w 的 8 位向量,相当于有 8 条单独的连线。原创 2022-08-14 02:09:21 · 1903 阅读 · 0 评论 -
Verilog学习之Vector0:向量
向量用于使用一个名称对相关信号进行分组,以便于操作。例如,wire [7:0] w;声明一个名为 w 的 8 位向量,它在功能上等同于具有 8 条单独的连线。请注意,向量的声明将维度放在向量名称之前,这与 C 语法相比是不寻常的。但是,部分选择在矢量名称之后具有您所期望的尺寸。...原创 2022-08-14 00:13:49 · 680 阅读 · 0 评论 -
Verilog学习之7568:The 7458 is a chip with four AND gates and two OR gates.
创建一个与 7458 芯片功能相同的模块。它有 10 个输入和 2 个输出。您可以选择使用分配语句来驱动每条输出线,或者您可以选择声明(四)条线用作中间信号,其中每条内部线由一个与门的输出驱动。如需额外练习,请尝试两种方式。7458 是具有四个与门和两个或门的芯片。...原创 2022-08-13 23:46:59 · 505 阅读 · 0 评论 -
Verilog学习之Wire decl
到目前为止,电路已经足够简单,以至于输出是输入的简单函数。随着电路变得越来越复杂,您将需要电线将内部组件连接在一起。当你需要使用连线时,你应该在模块的主体中声明它,在它第一次使用之前的某个地方。(将来,您会遇到更多类型的信号和变量,它们也以相同的方式声明,但现在,我们将从wire 类型的信号开始)。...原创 2022-08-13 23:15:20 · 343 阅读 · 0 评论 -
Verilog学习之Xnorgate
创建一个实现 XNOR 门的模块。按位操作符包括:取反(~),与(&),或(|),异或(^),同或(~^)。按位操作符对 2 个操作数的每 1bit 数据进行按位操作。如果 2 个操作数位宽不相等,则用 0 向左扩展补充较短的操作数。取反操作符只有一个操作数,它对操作数的每 1bit 数据进行取反操作。......原创 2022-08-13 22:22:57 · 1159 阅读 · 0 评论 -
Verilog学习之Norgate
创建一个实现 NOR 门的模块。或非门是一个输出反相的或门。用 Verilog 编写的 NOR 函数需要两个运算符。分配语句驱动带有值的线(或“网”,因为它更正式地称为)。这个值可以是你想要的复杂函数,只要它是一个组合(即,无记忆,没有隐藏状态)函数。分配语句是连续分配,因为只要其任何输入永远发生变化,就会“重新计算”输出,就像一个简单的逻辑门一样。......原创 2022-08-13 21:28:52 · 3108 阅读 · 0 评论 -
Verilog学习之Andgate
创建一个实现与门的模块。该电路现在有三根线(a、b 和 out)。连线 a 和 b 已经有输入端口驱动到它们的值。但是目前的wire out不是由任何东西驱动的。编写一个用信号 a 和 b 的 AND 驱动的赋值语句。请注意,该电路与非门非常相似,只是多了一个输入。如果听起来不同,那是因为我已经开始将信号描述为被驱动(具有由附加的东西决定的已知值)或不被某物驱动。输入线由模块外部的东西驱动。分配语句会将逻辑电平驱动到线路上。...原创 2022-08-13 20:54:23 · 1318 阅读 · 0 评论 -
Verilog学习之Notgate
创建一个实现非门的模块。该电路类似于电线,但略有不同。在进行从进线到出线的连接时,我们将使用逆变器(或“非门”)而不是普通线。使用分配语句。分配语句将不断地将 in 的反转驱动到线输出。...原创 2022-08-13 20:40:09 · 572 阅读 · 0 评论 -
Verilog学习之Wire4
创建一个具有 3 个输入和 4 个输出的模块,其行为类似于进行这些连接的电线:原创 2022-08-13 20:27:46 · 272 阅读 · 0 评论 -
Verilog学习之wire
创建一个具有一个输入和一个输出的模块,其行为类似于电线。与物理线不同,Verilog 中的线(和其他信号)是有方向的。这意味着信息仅在一个方向上流动,从(通常是一个)源到接收器(源通常也称为驱动器,将值驱动到线路上)。在 Verilog“连续赋值”(assign left_side = right_side;)中,右侧的信号值被驱动到左侧的导线上。赋值是“连续的”,因为即使右侧的值发生变化,赋值也会一直持续。连续分配不是一次性事件。模块上的端口也有方向(通常是输入或输出)。...原创 2022-08-13 20:03:06 · 1513 阅读 · 0 评论 -
四选一的多路选择器
制作一个四选一的多路选择器,要求输出定义上为线网类型原创 2022-08-13 17:26:35 · 2273 阅读 · 0 评论 -
task 和 function说明语句
task和function说明语句分别用来定义任务和函数,利用任务和函数可以把一个很大的程序模块分解成较小的任务和函数便于理解和调试。输入、输出和总线信号的值可以传入、传出任务和函数。任务和函数往往还是大的程序模块中在不同地点多次用到的相同的程序段。使用task和function语句可以简化程序的结构,使程序明白易懂,是编写较大型模块的基本功。...原创 2022-08-12 21:28:45 · 342 阅读 · 0 评论 -
结构说明语句
Verilog语言中的任何过程模块都从属于4种结构的说明语句:initial说明语句、always说明语句、task说明语句、function说明语句。一个程序模块可以有多个initial和always过程块。每个initial和always说明语句在仿真的一开始同时立即开始执行。initial语句只执行一次,而always语句则是不断地重复活动着,直到仿真过程结束。但always语句后跟着的过程块是否运行,则要看它的触发条件是否满足,如满足则运行过程块一次,再次满足则再运行一次,直至仿真过程结束。....原创 2022-08-11 02:16:17 · 891 阅读 · 0 评论 -
Verilog生成块
生成语句可以动态地生成Verilog代码。这一声明语句方便了参数化模块的生成。当对矢量中的多个位进行重复操作时,或者当进行多个模块的实例引用的重复操作时,或者在根据参数的定义来确定程序中是否应该包括某段Verilog代码的时候,使用生成语句能够大大简化程序的编写过程。生成语句能够控制变量的声明、任务或函数的调用,还能对实例引用进行全面的控制。编写代码时必须在模块中说明生成的实例范围,关键字generate-endgenerate用来指定该范围。...原创 2022-08-08 20:47:10 · 833 阅读 · 0 评论 -
顺序块和并行块
块语句的作用是将多条语句合并成一组,使它们像一条语句那样。可以使用关键字begin和end将多条语句合并在一起。由于这些语句需要一条接一条的顺序执行,常称为顺序块。Verilog语言中的块语句为顺序块和并行块。3种有特点的块语句为命名块,命名块的禁用和嵌套的块。......原创 2022-08-05 23:06:49 · 1153 阅读 · 0 评论 -
循环语句(HDL)
Verilog HDL中循环语句用来控制执行语句的执行次数,共有四种循环语句。原创 2022-08-04 22:31:34 · 669 阅读 · 0 评论 -
多路分支语句
第三类条件语句if_else_if的形式从多个选项中确定一个结果。如果选项的数目很多,那么使用起来很不方便。而使用case语句来描述这种情况是非常简便的。原创 2022-08-01 01:21:11 · 803 阅读 · 0 评论 -
条件语句的语法
条件语句用于根据某个条件来确定是否执行其后的语句,关键字if和else用于表示条件语句原创 2022-07-31 19:56:05 · 540 阅读 · 0 评论 -
if条件语句
if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。原创 2022-07-31 16:35:56 · 4443 阅读 · 0 评论 -
Verilog赋值语句
在Verilog HDL语言中,信号有两种赋值方式原创 2022-07-30 02:36:08 · 2904 阅读 · 0 评论 -
Verilog关键词
在Verilog HDL中,所有的关键词是事先定义好的确认符,用来组织语言结构原创 2022-07-30 01:37:25 · 3734 阅读 · 0 评论 -
位拼接运算符
在Verilog HDL语言中的特殊运算符,位拼接运算符,Concatation。可以把两个或多个信号的某些位拼接起来。原创 2022-07-30 01:09:20 · 1918 阅读 · 0 评论 -
Verilog移位运算符
在Verilog HDL中,有两种运算符,分别是左移运算符和右移运算符。原创 2022-07-28 18:30:48 · 11500 阅读 · 0 评论