Verilog RTL 代码设计——译码器计数器
实验1:设计4-16译码器
方法一:行为描述方式——使用CASE语句
1.代码
module decoder4_16A(out,in); output[15:0] out;input[3:0] in; reg[15:0] out;//out为16位寄存器 always @(in) //循环输入begin case(in)//输入4位十进制数,输出16位二进制数4'd0: out=16'b1111111111111110; 4'd1: out=16'b1111111111111101; 4'd2: out=16'b1111111111111011; 4'd3: out=16'b1111111111110111; 4'd4: out=16'b1111111111101111; 4'd5: out=16'b1111111111011111; 4'd6: out=16'b1111111110111111; 4'd7: out=16'b1111111101111111; 4'd8: out=16'b1111111011111111; 4'd9: out=16'b1111110111111111; 4'd10: out=16'b1111101111111111; 4'd11: out=16'b1111011111111111; 4'd12: out=16'b1110111111111111; 4'd13: out=16'b1101111111111111; 4'd14: out=16'b1011111111111111; 4'd15: out=16'b0111111111111111; endcaseend
endmodule
2.RTL视图
3.仿真波形
方法二:数据流描述方式——使用assign语句
1.代码
module decoder4_16B(in,out,enable);input[3:0] in;input enable;output[15:0] out;wire [15:0] out;assign out=~((enable)?(1<<in):16'b0);
/*enable=0时不工作,out=16'b0,enable=1时,out=in左移一位后的值,用16位二进制数表示*/
endmodule
2.RTL视图
3.仿真波形
实验2:设计M=12的计数器
设计要求:设计一个M=12的计数器,上电后对CLK信号,从0顺序计数到11,然后回绕到0,当计数值为11的CLK周期,溢出信号OV输出一个高电平,其他周期OV信号输出0。
1.代码
module RingCounter_M12(out,count,clk);output [3:0]out;output count;input clk;reg [3:0] out;reg count;
always@(posedge clk)//clk上升沿触发begincount<=1'b0;if(out==11)begincount<=1'b1;out<=4'b0;endelse out<=out+1;end
endmodule
2.RTL视图
3.仿真波形
实验3:设计M=20的计数器
设计要求:设计一个M=20的计数器,上电后对CLK信号,从0顺序计数到19,然后回绕到0 当计数值为19的CLK周期,溢出信号OV输出一个高电平,其他周期OV信号输出0
1.代码
module RingCounter_M20(out,count,clk);output [4:0]out;output count;input clk;reg [4:0] out;reg count;
always@(posedge clk)//clk上升沿触发begincount<=1'b0;if(out==19)begincount<=1'b1;out<=4'b0;endelse out<=out+1;end
endmodule
2.RTL视图
3.仿真波形
实验4:设计可预置加减计数器
设计要求:设计一个计数器,从0递增1计数到9,然后递减1计数到0,如此往复。
1.代码
module UpDown_M9(out,count,clk);input clk;output [3:0]out;output count;reg [3:0] out;reg count=1;
always@(posedge clk)begin //clk上升沿触发case(count)2'b1: //count=1时递加,且加至9时count取反变0begin out<=out+1;if (out==8)count=~count;end2'b0: //count=0时递减,且减至0时count取反变1beginout<=out-1;if (out==1)count=~count;endendcase
end
endmodule
2.RTL视图
3.仿真波形
Verilog RTL 代码设计——译码器计数器相关推荐
- Verilog RTL 代码设计新手上路
1. 做一个4选1的mux,并且进行波形仿真 和2选1的mux对比,观察资源消耗的变化: 实验分析:4选1的mux实际上就是在2选1的mux上进行拓展,选用2位的控制信号控制4位输入信号的选 ...
- Verilog RTL 代码设计示例
实验一.做一个4选1的mux,并且进行波形仿真和2选1的mux对比,观察资源消耗的变化 四选一mux代码如下: RTL视图如下: 波形仿真如下: 2选1的mux资源消耗情况: 4选1的mux资源消耗情 ...
- Verilog RTL代码设计规范简单整理总结
目录 1宗旨 2 IP的RTL设计文件的建立 3 TOP集成的设计文件的建立 4 文件头 5 宏定义 6 端口定义 6.1 IP设计中的端口定义 6.2 TOP集成中的端口定义 7 TOP模块的集成 ...
- Verilog RTL 代码实战 01——半加器全加器
目录 1.半加全加的区别 2.一位半加器代码 3.一位全加器代码 4.多位的加法器 1.半加全加的区别 半加器没有进位输入--c_in,只有两个输入 全加器有进位输入c_in,有三个输入 2.一位半加 ...
- Verilog RTL 代码实战 02——多路选择器MUX
目录 1.MUX应用 2.二选一MUX 3.四选一MUX 1.MUX应用 ①多路选择器是常见的选通器件,主要用于通道的扩展.复用: ②多路选择器又叫多路选择开关,可以根据需要选通某一路或者某几路从而达 ...
- (24)System Verilog设计十进制计数器
(24)System Verilog设计十进制计数器 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog设计十进制计数器 1.十进制计数器 ...
- FPGA(五)RTL代码之一(跨时钟域设计)
文章目录 前言 一.异步FIFO 二.异步复位同步释放 三.两级触发器同步 四.握手CDC设计 五.异步双口RAM 总结 前言 这不马上要面试了嘛,有些慌!HDLbits的题目已经刷完了,但又知道自己 ...
- FPGA(九)RTL代码之五(基本电路设计2)
系列文章目录 FPGA(四)数字IC面试的四个基本问题 FPGA(五)RTL代码之一(跨时钟域设计) FPGA(六)RTL代码之二(复杂电路设计1) FPGA(七)RTL代码之三(复杂电路设计2) F ...
- 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论
1 Verilog HDL 数字设计总论 1.1 几个重要的概念 EDA(Electronic Design Automation) 电子技术自动化 EDA工具 类似于软件工程中的IDE(集成开发环境 ...
最新文章
- 心脏病预测模型(基于Python的数据挖据)
- jquery实现停留半秒后再选择
- CxImage图像处理类库说明3(转载)
- Java集合LinkedHashMap
- ABAP,Java, nodejs和go语言的web server编程
- 【BIM入门实战】建筑墙体知识全攻略
- 三维重建 几何方法 深度学习_基于深度学习的视觉三维重建研究总结
- 会议交流 | 人工智能与机器学习创新峰会 - 知识图谱与图神经网络分会
- Flutter MaterialApp概述以及主题配置概述
- 中国电信建成全球首个覆盖最广的商用下一代物联网
- Ubuntu 12.04 安装PYQT4和Eric4
- iOS在照片上添加水印
- 线性代数与矩阵论 定理 1.3.9 唯一析因定理
- 20200708每日一句
- 如何将img镜像安装到硬盘、解决默认分区小的问题
- 《知乎周刊:读书这件小事》摘记及书评
- vivo X9的usb调试模式在哪里,开启vivo X9usb调试模式的方法
- android7.1索尼,Xperia 1
- 基于SpringBoot监控Java项目,暴漏springboot内置端点
- 怎样完成MES系统实施?