FPGA作业二——verilog设计
2017-10-31 18:05
281 查看
verilog设计实验
verilog设计实验拼接 4-16译码器
设计M12的计数器
设计M20的计数器
设计先增后减的计数器
拼接 4-16译码器
4-16译码器代码输入为ain,输出为cout
module Decode4_16(ain,cout); input[3:0] ain; output[15:0] cout; reg[15:0] cout; always @(ain) begin case(ain) 4'b0000: cout=16'b1111111111111110; 4'b0001: cout=16'b1111111111111101; 4'b0010: cout=16'b1111111111111011; 4'b0011: cout=16'b1111111111110111; 4'b0100: cout=16'b1111111111101111; 4'b0101: cout=16'b1111111111011111; 4'b0110: cout=16'b1111111110111111; 4'b0111: cout=16'b1111111101111111; 4'b1000: cout=16'b1111111011111111; 4'b1001: cout=16'b1111110111111111; 4'b1010: cout=16'b1111101111111111; 4'b1011: cout=16'b1111011111111111; 4'b1100: cout=16'b1110111111111111; 4'b1101: cout=16'b1101111111111111; 4'b1110: cout=16'b1011111111111111; 4'b1111: cout=16'b0111111111111111; default: cout=16'bx; endcase end endmodule
Quartus RTL电路图
译码器波形仿真图
仿真前:
波形仿真后:
设计M=12的计数器
M=12的计数器代码时钟信号clk、输出信号cntv
module Cnt_12(clk,cntv); parameter NBITS = 4,MAX=12; input clk; output [NBITS-1:0]cntv; reg [NBITS-1:0]Counter; always @(posedge clk) if(Counter < MAX) Counter <= Counter + 1'b1; else Counter <= 0; assign cntv = Counter; endmodule
Quantus RTL电路图
计数器波形仿真图
仿真前:
仿真后:
设计M=20的计数器
M=20的计数器时钟信号clk,输出为cntv,其中Q为移位寄存器的输出
module Cnt_20(clk,cntv); parameter NBITS = 5,MAX=19; input clk; output [NBITS-1:0]cntv; reg [NBITS< 4000 /span>-1:0]D; reg [NBITS-1:0]Q; always @(Q) begin if(Q < MAX) begin D = Q + 1'b1; end else begin D = 0; end end always @(posedge clk) begin Q <= D; end assign cntv = Q; endmodule
Quantus RTL电路图
计数器波形仿真图
仿真前:
仿真后:
设计先增后减的计数器
设计要求设计一个计数器,从0递增1计数到9,然后递减1计数到0,如此往复|
信号定义
信号名称 | 类型 | 说明 |
---|---|---|
clk | 时钟信号 | 上升沿有效 |
cntv | 输出信号 | 输出数值 |
C | 中间变化量 | 判断数值的增减的条件变量 |
module AD_9(clk,cntv); parameter NBITS = 4, MAX = 17; input clk; output [NBITS-1:0]cntv; reg [NBITS-1:0]D; reg [NBITS-1:0]Q; reg [NBITS:0]C; always @(posedge clk) begin if(C<MAX)begin C<=C+1'b1; end else C<=0; end always @(C) begin if(C < 9) begin D = Q + 1'b1; end else begin if(C < MAX) begin D = Q - 1'b1; end end end always@(posedge clk) begin Q <= D; end assign cntv = Q; endmodule
Quantus RTL电路图
计数器波形仿真图
仿真前:
仿真后:
相关文章推荐
- FPGA作业2:利用veilog设计12进制计数器
- CPLD/FPGA/Verilog_FPGA设计的四种常用思想与技巧
- FPGA+Verilog中计时器+数码管设计问题中的除法器和求余器使用问题
- FPGA学习(第9节)-Verilog设计电路大串讲(误区+组合逻辑+时序逻辑+状态机设计)
- CPLD/FPGA/Verilog_FPGA设计的四种常用思想与技巧
- 【FPGA】Verilog状态机设计
- FPGA Prototyping By Verilog Examples第五章 状态机FSM设计
- hjr-FPGA:verilog HDL 编程与 testbench 设计
- FPGA Prototyping By Verilog Examples第五章 状态机FSM设计
- FPGA作业2:利用veilog设计4-16译码器
- CPLD/FPGA/Verilog_高速电路设计/信号完整性的一些基本概念
- FPGA作业3.2:通过例化设计3-8译码器
- FPGA Prototyping By Verilog Examples第六章 状态机FSMD设计
- Verilog-FPGA硬件电路设计之一——if语句优先级问题
- CPLD/FPGA/Verilog_设计资料_高性能电路设计
- 【FPGA】Verilog状态机设计
- CPLD/FPGA/Verilog_高速电路设计/信号完整性的一些基本概念
- CPLD/FPGA/Verilog_FPGA设计的四种常用思想与技巧
- FPGA设计之常用Verilog语法
- Verilog HDL DDS设计(作业3)