/************最简单状态机, 三角波发生器**************/ /**************************************************/ /**************************************************/ /******************20250614************************/ `timescale 1ns/10ps module tri_gen ( clk, res, d_out ); input clk; input res; output[8:0] d_out; reg[2:0] state; //主状态机寄存器; reg[8:0] d_out; reg[7:0] con; //计数器, 记录平顶时间 always@(posedge clk or negedge res) if(~res) begin state <=0; d_out <=0; con <=0; end else begin case(state) /**************************************************/ 0: //上升 begin d_out <=d_out +1; if(d_out ==299) begin state <=1; end end /**************************************************/ 1: //平顶 begin if(con ==200) begin state <=2; con <=0; end else begin con <=con +1; end end /**************************************************/ 2: //下降 begin d_out <=d_out -1; if(d_out ==1) begin state <=3; end end /**************************************************/ 3: //平底 begin if(con ==200) begin state <=0; con <=0; end else begin con <=con +1; end end /**************************************************/ endcase end endmodule /****************testbench oftri_gen***************/ module tri_gen_tb; reg clk, res; wire[8:0] d_out; tri_gen tri_gen ( .clk(clk), .res(res), .d_out(d_out) ); initial begin clk <=0; res <=0; #17 res <=1; #20000 $stop; end always #5 clk <= ~clk; endmodule /**************************************************/ /**************************************************/ /**************************************************/
tri_gen1.zip
2025-6-17 23:49 上传
点击文件名下载附件
751 Bytes, 下载次数: 0
举报
人才类勋章
319
487
63
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号