微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 每当 dis_data有变化就产生一个 高脉冲该怎么写啊

每当 dis_data有变化就产生一个 高脉冲该怎么写啊

时间:10-02 整理:3721RD 点击:
每当  dis_data有变化就产生一个 高脉冲该怎么写啊
我知道我这个写的是不对的,只是做个示范
always @(dis_data)
begin
        start <= 1'b0;
        start <= 1'b1;
        start <= 1'b0;
end

assign start = (dis data1 != dis_data)?1'b1:1'b0;这个也是不行的,因为脉冲宽度不可控。

我是采集输入信号的变化,最好用组合逻辑实现
如果用时序逻辑实现就会产生一个始终周期的误差。

对dis_data进行边缘检测(上升或下降沿),检测到的话,拉高start,一个时钟后再拉低就行。这个用组合逻辑实现,我是不会

reg [7:0]count=0;
assign start = (count !=1'b0)?1'b1:1'b0;
always @(posage clk)
begin
     if(count==8'd10)count<=1'b0;
    else  if(dis_data||(count!=0))  count<=count+1'b1;
    else count<=count;
end

count的大小就是脉冲宽度。count=1时,就是一个时钟的脉冲宽度。

always @(posedge clk)
begin
    dis_data_dly <= dis_data;
end
assign pos_dis = (dis_data_dly == 0)&&(dis_data == 1)
这个是采上升沿的 你参考下,clk要和dis_data是同源的

采双沿 assign = (dis_data_dly != dis_data )

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top