VerilogHDL 麻烦大家给个思路
时间:10-02
整理:3721RD
点击:
地址总线来选择我的内部寄存器,数据总线给出值(内部相应寄存器接收),然后A信号按照数据总线给出的值进行相应的输出.
reg[1:0] sel;//选择寄存器,低位是A信号的选择开关(0为关闭,1为开启).高位是主时钟是否分频(1为2分频,0为不分频) reg[19:0] cnt;//A信号的输出个数.
比如:sel = 2'b11; cnt = 5000; 则:主时钟为2分频,A信号输出5000个主时钟方波.并且输出5000个方波后,A信号停止,等待下一次的开启. 请问我如何写啊,给点思路?
reg[1:0] sel;//选择寄存器,低位是A信号的选择开关(0为关闭,1为开启).高位是主时钟是否分频(1为2分频,0为不分频) reg[19:0] cnt;//A信号的输出个数.
比如:sel = 2'b11; cnt = 5000; 则:主时钟为2分频,A信号输出5000个主时钟方波.并且输出5000个方波后,A信号停止,等待下一次的开启. 请问我如何写啊,给点思路?
........................
wire load;// this is the control line to update sel, and cnt;
reg [20:0] count ; // one more bit than cnt;
always @ ( posedge clk, negedge rst )
if ( ! rst ) begin
count <= 0;
end else if ( load ) begin
count <= cnt << sel[1]; // if half frequency, double the count
end else if ( count != 0 )
count <= count -1;
assign output = sel[1] ? count[1]: count[0];
count <= cnt << sel[1]; // if half frequency, double the count
我输出的cnt是主控器传过来的,你这样做不就不符合规定了吗?
感謝你的分享
多了一個參考文獻
