两道典型的Verilog面试题

奇数分频器

在Verilog中,偶数频分频较容易实现,只需要设定一个计数器,计数器值为分频数的一半,当计数记满后,输出信号取非,计数值清零。但这样并不能奇数分频,因为奇数分频数的一半包含0.5,无法只通过上升沿得到。但是设置两个不同的偶数分频时钟,通过上升沿和下降沿一同触发的模式,可以实现奇数分频。
在下面的代码中,需要修改div1,div2两个参数的值以实现分频,div1为分频数除以二的商,div2为余数。

module divfreq(clk, clk_o, rst_n, clk_pose, clk_nege, cntpose, coutnege);

input  clk;
input  rst_n;
output clk_o;
output clk_pose;
output clk_nege;
output [2:0] cntpose;
output [2:0] cntnege;

reg clk_pose;
reg clk_nege;

reg [2:0] cntpose;
reg [2:0] cntnege;

parameter div1 = 2, div2 = 4; //div1 = 5/2, div2 = 5-1
assign clk_o = clk_pose | clk_nege;
always@(posedge clk or negedge rst_n)
begin
if(rst_n)
	clk_pose = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值