小孩彦旻旻

  • 2024-11-09
  • 发表了主题帖: pynq snn加速核工程分析求助

    本帖最后由 小孩彦旻旻 于 2024-11-9 16:25 编辑 想问问大佬,pynq如何进行一个完整的数据流程分析。 图一是连线,怎么分析。(Block Design里面的所有模块该如何学习呢) 图二是这个snn工程。 我究竟该如何分析这个snn工程的完整数据流程呢 读PS端的python代码照着分析可以吗    

  • 2024-07-27
  • 发表了主题帖: LTC6910可控增益放大器

    求助大神!为啥LTC6910运放的输出一直为高电平啊!救救孩子

  • 2024-05-24
  • 发表了主题帖: 为什么quartus仿真不出波形啊啊啊啊球球大佬帮忙看一下呗

     RTL视图   顶层模块     dds正弦波信号发生模块 module    dds_noip(     input    wire        sclk,     input    wire        rst_n,     input wire [7:0]    FW,     output    wire    [7:0]    o_wave,     output   reg  out ); parameter    FRQ_W=32'd85899346;        //相当于M parameter    FRQ_ADD=32'd85899346/2;//相当于递增量 reg        [31:0]    phase_sum; wire    [8:0]    addr; reg        [31:0]    frq_word; reg        [6:0]    div_cnt; reg                div_flag; always @(posedge sclk or negedge rst_n)     if(rst_n == 1'b0)         phase_sum <= 1'd0;     else          phase_sum <= phase_sum + FRQ_W/FW;      assign addr = phase_sum[31:23];          always @(posedge sclk or negedge rst_n)     if(rst_n == 1'b0)         out <= 0;     else if(o_wave>128)        out <= 1;     else          out <= 0; rom_512x8     rom_512x8_inst(     .address(addr),      .clock(sclk),      .rst(rst_n),      .q(o_wave)      );       endmodule   rom模块   module rom_512x8 (     address,     clock,     rst,     q     );     input    [8:0]  address;     input      clock;     input   rst;     output reg [7:0]  q;      parameter SINE_FILE = "sine.txt";  reg [7:0] sine_rom [511:0];        initial begin $readmemh(SINE_FILE, sine_rom);  end always@(posedge clock,negedge rst) begin if(!rst) begin q<=8'b0; end else  begin q<=sine_rom[address]; end end endmodule   uart串口接收模块 module uart_rx(                         clk,                         res,                         RX,                         data_out,                         en_data_out                         );   input                    clk; input                    res; input                    RX; output[7:0]       data_out;//接收字节输出 output                en_data_out;//输出使能   reg[7:0]                state;//主状态机 reg[12:0]                con;//用于计算比特宽度; //系统时钟频率24兆赫兹(24,000,000),支持4800波特率 //计数24000000/4800=5000(0001 0011 1000 1000),13位 //1.5倍宽度,5000*1.5=7500,算8000(0001 1111 0100 0000),13位 reg[4:0]                con_bits;//用于计算比特数,计转了多少圈   reg                        RX_delay;//RX延时 reg                     en_data_out;   reg[7:0]                data_out;   always@(posedge clk or negedge res)   if(~res)begin     state<=0;con<=0;con_bits<=0;RX_delay<=0;     data_out<=0;en_data_out<=0; end else begin   RX_delay<=RX;//有时钟就在动,不需要条件         case(state)     0://等空闲,10个bit以上连续的1     begin             if(con==5000-1)begin                 con<=0;//计数转了一圈             end             else begin                 con<=con+1;             end             if(con==0)begin                 if(RX)begin                     con_bits<=con_bits+1;                 end                 else begin                     con_bits<=0;                 end         end                  if(con_bits==12)begin             state<=1;         end     end          1://等起始位;     begin     en_data_out<=0;         if(~RX&RX_delay)begin             state<=2;         end     end     2://收最低位b0;     begin             //要等1.5Tbit,5000*1.5=7500             if(con==7500-1)begin                 con<=0;                 data_out[0]<=RX;                 state<=3;             end             else begin                 con<=con+1;                     end     end     3://收最低位b1;     begin     //要等1Tbit,5000*1=5000             if(con==5000-1)begin                 con<=0;                 data_out[1]<=RX;                 state<=4;             end             else begin                 con<=con+1;                     end     end     4://收最低位b2     begin     //要等1Tbit,5000*1=5000             if(con==5000-1)begin                 con<=0;                 data_out[2]<=RX;                 state<=5;             end             else begin                 con<=con+1;                     end     end     5://收最低位b3     begin     //要等1Tbit,5000*1=5000             if(con==5000-1)begin                 con<=0;                 data_out[3]<=RX;                 state<=6;             end             else begin                 con<=con+1;                     end     end     6://收最低位b4     begin     //要等1Tbit,5000*1=5000             if(con==5000-1)begin                 con<=0;                 data_out[4]<=RX;                 state<=7;             end             else begin                 con<=con+1;                     end     end     7://收最低位b5     begin     //要等1Tbit,5000*1=5000             if(con==5000-1)begin                 con<=0;                 data_out[5]<=RX;                 state<=8;             end             else begin                 con<=con+1;                     end     end     8://收最低位b6     begin     //要等1Tbit,5000*1=5000             if(con==5000-1)begin                 con<=0;                 data_out[6]<=RX;                 state<=9;             end             else begin                 con<=con+1;                     end     end     9://收最低位b7     begin     //要等1Tbit,5000*1=5000             if(con==5000-1)begin                 con<=0;                 data_out[7]<=RX;                 state<=10;             end             else begin                 con<=con+1;                     end     end     10://产生使能脉冲     begin         en_data_out<=1;         state<=1;     end          default://其他未定义状态     begin         state<=0;         con<=0;         con_bits<=0;         en_data_out<=0;          end               endcase   end   endmodule   rom的初始化文件也都放在和db、modelsim同级目录下面了,还是不是到什么问题,是模块连接的问题吗        

  • 2024-05-20
  • 回复了主题帖: verilog 实现rom,仿真输出一直为x。求助..

    卿小小 发表于 2024-5-20 11:34 现象:仿真输出一直为x。 原因:在rom.v中,指定了仿真初始化文件为sinABFull256x16Hex.txt;但是你的仿 ... 解决啦,就是初始化文件没有放在modelsim文件里,非常感谢!

  • 回复了主题帖: verilog 实现rom,仿真输出一直为x。求助..

    Jacktang 发表于 2024-5-20 07:28 帮楼主顶一下 谢谢哦  

  • 2024-05-19
  • 发表了主题帖: verilog 实现rom,仿真输出一直为x。求助..

    写了一个rom,写入数据,为什么仿真的时候输出一直为x啊,有没有大佬帮我看看救命呜呜呜呜呜呜呜呜呜 module rom( rst,clk,o_sine); input clk; input rst; //复位信号 output o_sine; reg [7:0] o_sine; //存储的数据位宽为8位 //parameter INIT_FILE = "../dat/ram_init.dat"reg [7:0] ROM [255:0]; parameter SINE_FILE = "sinABFull256x16Hex.txt"; //正弦波形数据 reg [7:0] sine_rom [255:0]; //存储器的深度为256 reg [7:0] cnt; integer i; initial begin $readmemh(SINE_FILE, sine_rom); for(i=0;i<256;i=i+1) $display("sine_rom[%d]= %h",i,sine_rom[i]); end always@(posedge clk,negedge rst) begin if(!rst) begin o_sine<=8'b0; cnt<=0; end else if(cnt<256) begin o_sine<=sine_rom[cnt]; cnt<=cnt+1; end else cnt<=0; end endmodule   下面是测试代码 `timescale 1ns / 1ps module rom_tb( ); reg rst,clk; wire [7:0] o_sine; initial begin clk=0; rst=1; //低电平复位信号赋初始值1 #40 rst=0; #60 rst=1; end rom rom_test(.rst(rst),.clk(clk),.o_sine(o_sine)); always #1 clk=~clk; //时钟周期为2ns endmodule  

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯积分:23
  • 好友:--
  • 主题:4
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言