实验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 代码设计——译码器计数器相关推荐

  1. Verilog RTL 代码设计新手上路

    1.      做一个4选1的mux,并且进行波形仿真 和2选1的mux对比,观察资源消耗的变化: 实验分析:4选1的mux实际上就是在2选1的mux上进行拓展,选用2位的控制信号控制4位输入信号的选 ...

  2. Verilog RTL 代码设计示例

    实验一.做一个4选1的mux,并且进行波形仿真和2选1的mux对比,观察资源消耗的变化 四选一mux代码如下: RTL视图如下: 波形仿真如下: 2选1的mux资源消耗情况: 4选1的mux资源消耗情 ...

  3. Verilog RTL代码设计规范简单整理总结

    目录 1宗旨 2 IP的RTL设计文件的建立 3 TOP集成的设计文件的建立 4 文件头 5 宏定义 6 端口定义 6.1 IP设计中的端口定义 6.2 TOP集成中的端口定义 7 TOP模块的集成 ...

  4. Verilog RTL 代码实战 01——半加器全加器

    目录 1.半加全加的区别 2.一位半加器代码 3.一位全加器代码 4.多位的加法器 1.半加全加的区别 半加器没有进位输入--c_in,只有两个输入 全加器有进位输入c_in,有三个输入 2.一位半加 ...

  5. Verilog RTL 代码实战 02——多路选择器MUX

    目录 1.MUX应用 2.二选一MUX 3.四选一MUX 1.MUX应用 ①多路选择器是常见的选通器件,主要用于通道的扩展.复用: ②多路选择器又叫多路选择开关,可以根据需要选通某一路或者某几路从而达 ...

  6. (24)System Verilog设计十进制计数器

    (24)System Verilog设计十进制计数器 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog设计十进制计数器 1.十进制计数器 ...

  7. FPGA(五)RTL代码之一(跨时钟域设计)

    文章目录 前言 一.异步FIFO 二.异步复位同步释放 三.两级触发器同步 四.握手CDC设计 五.异步双口RAM 总结 前言 这不马上要面试了嘛,有些慌!HDLbits的题目已经刷完了,但又知道自己 ...

  8. FPGA(九)RTL代码之五(基本电路设计2)

    系列文章目录 FPGA(四)数字IC面试的四个基本问题 FPGA(五)RTL代码之一(跨时钟域设计) FPGA(六)RTL代码之二(复杂电路设计1) FPGA(七)RTL代码之三(复杂电路设计2) F ...

  9. 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论

    1 Verilog HDL 数字设计总论 1.1 几个重要的概念 EDA(Electronic Design Automation) 电子技术自动化 EDA工具 类似于软件工程中的IDE(集成开发环境 ...

最新文章

  1. 心脏病预测模型(基于Python的数据挖据)
  2. jquery实现停留半秒后再选择
  3. CxImage图像处理类库说明3(转载)
  4. Java集合LinkedHashMap
  5. ABAP,Java, nodejs和go语言的web server编程
  6. 【BIM入门实战】建筑墙体知识全攻略
  7. 三维重建 几何方法 深度学习_基于深度学习的视觉三维重建研究总结
  8. 会议交流 | 人工智能与机器学习创新峰会 - 知识图谱与图神经网络分会
  9. Flutter MaterialApp概述以及主题配置概述
  10. 中国电信建成全球首个覆盖最广的商用下一代物联网
  11. Ubuntu 12.04 安装PYQT4和Eric4
  12. iOS在照片上添加水印
  13. 线性代数与矩阵论 定理 1.3.9 唯一析因定理
  14. 20200708每日一句
  15. 如何将img镜像安装到硬盘、解决默认分区小的问题
  16. 《知乎周刊:读书这件小事》摘记及书评
  17. vivo X9的usb调试模式在哪里,开启vivo X9usb调试模式的方法
  18. android7.1索尼,Xperia 1
  19. 基于SpringBoot监控Java项目,暴漏springboot内置端点
  20. 怎样完成MES系统实施?

热门文章

  1. push()与pop()的使用
  2. php单位有哪些,css中的角度单位有哪些?
  3. table中填写数据并批量增加
  4. 大学四年,因为这些网站,他顺利拿下字节跳动的offer!
  5. [培训-DSP快速入门-3]:C54x DSP内存资源与内存空间分布
  6. 将颜色值转为rgba值
  7. node JS獲取GPS_node学习笔记(三十八)
  8. 小型数控雕刻机制作Arduino_基于Arduino DIY的激光雕刻机
  9. 计算机专业新年对联,大学各学院新春对联
  10. 对于越野车来说 带大梁,前后硬桥!