من نیاز به راهنمایی در مورد نوشتن یک ماژول با زبان verilogبرای تقسیم فرکانس ورودی بصورت 1/2و1/4و1/8 دارم.تا جایی که من تحقیق کردم با استفاده از فلیپ فلاپ د میشه این کار را کرد.یه چیزی هایی هم نوشتم اما ایراد می گرفت توی نرم افزار
اطلاعیه
Collapse
No announcement yet.
کمک در مورد verilog
Collapse
X
-
پاسخ : کمک در مورد verilog
من این کد نوشتم :
module ClkDiv(Clk_In, ClkDiv2, ClkDiv4, ClkDiv8, ResetL);
input Clk_In;
output ClkDiv2;
output ClkDiv4;
output ClkDiv8;
input ResetL;
reg ClkDiv2;
reg ClkDiv4;
reg ClkDiv8;
reg Counter1;
reg [1:0]Counter2;
always @(posedge Clk_In or negedge ResetL)
if (!ResetL)
ClkDiv2 <= 0;
else
ClkDiv2 <= ~ClkDiv2;
always @(posedge Clk_In or negedge ResetL)
if (!ResetL) begin
ClkDiv4 <= 0;
Counter1 <= 0;
end
else begin
if (Counter1 == 1)
ClkDiv4 <= ~ClkDiv4;
Counter1 <= ~Counter1;
end
always @(posedge Clk_In or negedge ResetL)
if (!ResetL) begin
ClkDiv8 <= 0;
Counter2 <= 0;
end
else begin
if (Counter2 == 3)
ClkDiv8 <= ~ClkDiv8;
Counter2 <= Counter2 + 1;
end
endmodule
https://www.linkedin.com/in/mohammadhosseini69
http://zakhar.blog.ir
-
پاسخ : کمک در مورد verilog
خوب عزیز من یک کانتر بگیر که بر اساس پالس ورودی بشمره. بیت صفر اش میشه تقسیم بر 2و بیت 1 میشه تقسیم به چهار و غیره.
مثلا:
کد:module ClkDiv(clkIn, clkOut2, clkOut4, clkOut8) input clkIn; output clkOut2, clkOut4, clkOut8; reg[2:0] cntr; assign clkOut2 = cntr[0]; assign clkOut4 = cntr[1]; assign clkOut8 = cntr[2]; always @(posedge clkIn) begin reg <= reg + 1; end endmodule
دیدگاه
دیدگاه