Verilog HDL语言组合逻辑电路设计实列

2024-02-08 00:08

本文主要是介绍Verilog HDL语言组合逻辑电路设计实列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Verilog DHL语言组合逻辑举列

  • 内容
    • 8位带进位端的加法器的设计
    • 指令译码电路设计
    • 比较重组信号设计
    • 比较器设计
    • 3-8译码器设计

内容

8位带进位端的加法器的设计

实现模块:

module adder_8(cout,sum,a,b,cin);input cin;input[7:0] a,b;output cout;output[7:0] sum;assign {cout,sum}=a+b+cin;
endmodule

测试模块:

`timescale 1ns/1ns
`include "adder_8.v"
module adder_8_test;reg cin;reg[7:0] a,b;wire cout;wire[7:0] sum;initial begincin=1;a=8'b0110;b=8'b0011;#100 cin=0;a=8'b100;b=8'b0110;#100 $stop;endadder_8 m(.cout(cout),.sum(sum),.a(a),.b(b),.cin(cin));
endmodule

指令译码电路设计

实现模块:

`define plus 3'd0
`define minus 3'd1
`define band 3'd2
`define bor 3'd3
`define unegate 3'd4
module alu(out,opcode,a,b);output[7:0] out;input[2:0] opcode;input[7:0] a,b;reg [7:0] out;always @(opcode or a or b)begincase(opcode)`plus:out=a+b;`minus:out=a-b;`band:out=a&b;`bor:out=a|b;`unegate:out=~a;default:out=8'hx;endcaseend
endmodule

测试模块:

`timescale 1ns/1ns
`include "alu.v"
module alu_test;reg[7:0] a,b;reg[2:0] opcode;wire[7:0] out;initialbegina=4;b=6;opcode=3'd0;#100 opcode=3'd1;#100 opcode=3'd2;#100 opcode=3'd3;#100 opcode=3'd4;#100 $stop;endalu m(.out(out),.opcode(opcode),.a(a),.b(b));
endmodule;

比较重组信号设计

实现模块:

module sort4(ra,rb,rc,rd,a,b,c,d);parameter t=3;output[t:0] ra,rb,rc,rd;input[t:0] a,b,c,d;reg[t:0] ra,rb,rc,rd;always @(a or b or c or d)begin:localreg[t:0] va,vb,vc,vd;{va,vb,vc,vd}={a,b,c,d};sort2(va,vc);sort2(vb,vd);sort2(va,vb);sort2(vc,vd);sort2(vb,vc);{ra,rb,rc,rd}={va,vb,vc,vd};endtask sort2;inout[t:0]x,y;reg [t:0]tmp;if(x>y)begintmp=x;x=y;y=tmp;endendtask
endmodule

测试模块:

`timescale 1ns/1ns
`include "sort4.v"
module sort4_test;reg[3:0]a,b,c,d;wire[3:0] ra,rb,rc,rd;initialbegina=0;b=0;c=0;d=0;repeat(20)begin#100 a={$random}%15;b={$random}%15;c={$random}%15;d={$random}%15;end#100 $stop;endsort4 m(.ra(ra),.rb(rb),.rc(rc),.rd(rd),.a(a),.b(b),.c(c),.d(d));
endmodule

比较器设计

实现模块:

module compare(equal,a,b);parameter size=1;output equal;input[size-1:0] a,b;assign equal=(a==b)?1:0;
endmodule

测试模块:

`timescale 1ns/1ns
`include "compare.v"
module compare_test;reg a,b;wire equal;initial begina=0;b=0;repeat(10)begin#100 a={$random}%10;b={$random}%10;end#100 $stop;endcompare m(.equal(equal),.a(a),.b(b));
endmodule

3-8译码器设计

实现模块:

module decoder(out,in);output[7:0] out;input[2:0] in;assign out=1'b1<<in;
endmodule

测试模块:

`timescale 1ns/1ns
`include "decoder.v"
module decoder_test;reg[2:0] in;wire[7:0] out;initialbeginin=0;#100 in=3'b000;#100 in=3'b001;#100 in=3'b010;#100 in=3'b011;#100  in=3'b100;#100 in=3'b101;#100 in=3'b110;#100 in=3'b111;#100 $stop;enddecoder m(.out(out),.in(in));
endmodule

这篇关于Verilog HDL语言组合逻辑电路设计实列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/689356

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验