1.用Verilog编一个计数器的程序举个简单点的例子 , 如下 。
设计一个4bit的计数器 , 在记到最大值时输出一个信号
module counter_16 ( input clk, input rst_n, input cnt_in ,output reg cnt_out );
reg [3:0] cnt;
always @ (posedge clk or negedge rst_n) begin
if (~rst_n) cnt <= 4'b0;
else if (cnt_in) cnt <= cnt +1'b1;
else cnt <= cnt;
end
always @ (posedge clk or negedge rst_n) begin
if (~rst_n) cnt_out <= 1'b0;
else if (cnt_in && cnt == 4'b1111) cnt_out <= 1'b1;
else cnt_out <= 1'b0;
end
endmodule
这实际上设计了一个16进制计数器其中的一位 , 你可以例化多个相同模块 , 将低位的cnt_out连接到高位的cnt_in , 级联成一个任意位数的16进制计数器 。
2.计数器的verilog HDL程序原发布者:kiwiysh
用VerilogHDL设计计数器一、实验目的1.学习使用VerilogHDL语言 , 并学会使用进行QuartusⅡ软件编程和仿真;2.掌握数字电路的设计方法 , 熟悉设计过程及其步骤;3.培养学生的动手能力 , 能学以致用 , 为今后从事电子线路设计打下良好基础;4.巩固加深对数电知识的理解 , 在仿真调试过程中 , 能结合原理来分析实验现象;二、实验内容1.设计内容及要求1)利用VerilogHDL设计一个以自己学号后三位为模的计数器;2)编写源程序;3)给出仿真电路图和仿真波形图;2.需求分析:由于本人的学号后3位为212 , 所以应编一个以212为模的加法计数器 。若采用同步清零的方法 , 则计数为0~211 , 化为二进制数即为000000000计到011010011 。3.编写源代码:modulecount_212(out,data,load,reset,clk);output[8:0]out;input[8:0]data;inputload,reset,clk;reg[8:0]out;[email protected](posedgeclk)//clk上升沿触发beginif(!reset)out=9'h000;//同步清零 , 低电平有效elseif(load)out=data;//同步预置elseif(out>=211)out=9'h000;//计数最大值为211 , 超过清零elseout=out+1;//计数endendmodule程序说明:该计数器为一个9位计数器 , 计数范围0~211 , 具有同步同步置数和同步清零功能 。时钟的上升沿有效 , 当clk信号的上升沿到来时 , 如果清零信号为0 , 则清零;若不为0 , 计数器进行计数 , 计至211处同步清零 。4.画出仿真电路图:图1为同步置数、同步清零加法计
3.用VERILOG语言编写一个计数器模型以四位计数器为例给你写个 。我觉得你这题目有点问题 , 应该说电路中有个专用全局复位按键的 , count_flag为计数使能 , 当为高电平时对输入时钟进行计数 。
module COUNTER
(
//Input ports
SYSCLK,
RST_B,
COUNT_FLAG,
//Output ports
OVERFLOW,
DATA_OUT
);
//=============================================================
//Input and output declaration
//=============================================================
input SYSCLK;
input RST_B;
input COUNT_FLAG;
output OVERFLOW;
output [4:0] DATA_OUT;
//=============================================================
//Wire and reg declaration
//=============================================================
wire SYSCLK;
wire RST_B;
wire COUNT_FLAG;
reg OVERFLAG;
reg [3:0] DATA_OUT;
//=============================================================
//Wire and reg in the module
//=============================================================
reg [3:0] DATA_OUT_N; //The next value of DATA_OUT.
reg OVER_FLOW_N; //The next vlaue of OVER_FLOW.
parameter MAX_COUNT = 4'h8; //自己设置想计数到的最大值 。
- 编程序英文单词怎么写
- 安卓手机怎么写程序
- 磅与公斤的换算 磅与公斤的换算程序
- 怎么写支付程序
- 驱动软件怎么写
- c怎么写服务程序
- 30计数器怎么写
- 批处理怎么写程序
- 怎么用java写exe程序
- 程序设计的论文怎么写
