Rust 宏系统在工程化中的应用
2026/4/18 12:11:08
购买了一个小脚丫FPGA,型号为MX02-C,具备2000多个逻辑门,入门可用。
这款FPGA的好处是可以直接使用在线网页变成和仿真,不需要额外下载软件(一般来说FPGA软件可太大了)
// Module Function:呼吸灯modulebreath_led(clk,rst,led);input clk;//系统时钟输入input rst;//复位输出output led;//led输出reg[24:0]cnt1;//计数器1reg[24:0]cnt2;//计数器2reg flag;//呼吸灯变亮和变暗的标志位parameter CNT_NUM=3464;//计数器的最大值 period = (3464^2)*2 = 24000000 = 2s//产生计数器cnt1always@(posedge clkornegedge rst)beginif(!rst)begin cnt1<=13'd0;endelseif(cnt1>=CNT_NUM-1)cnt1<=1'b0;elsecnt1<=cnt1+1'b1;end//产生计数器cnt2always@(posedge clkornegedge rst)beginif(!rst)begin cnt2<=13'd0;flag<=1'b0;endelseif(cnt1==CNT_NUM-1)begin//当计数器1计满时计数器2开始计数加一或减一if(!flag)begin//当标志位为0时计数器2递增计数,表示呼吸灯效果由暗变亮if(cnt2>=CNT_NUM-1)//计数器2计满时,表示亮度已最大,标志位变高,之后计数器2开始递减flag<=1'b1;elsecnt2<=cnt2+1'b1;endelsebeginif(cnt2<=0)//当标志位为高时计数器2递减计数flag<=1'b0;//计数器2级到0,表示亮度已最小,标志位变低,之后计数器2开始递增elsecnt2<=cnt2-1'b1;end endelsecnt2<=cnt2;//计数器1在计数过程中计数器2保持不变end//比较计数器1和计数器2的值产生自动调整占空比输出的信号,输出到led产生呼吸灯效果assign led=(cnt1<cnt2)?1'b0:1'b1;endmodule