先上程序:module max7219(clkrst_nclk1loaddin);input clkrst_n;output clk1loaddin;//reg[11:0] cnt;reg[11:0] cnt1;always @(posedge clk or negedge rst_n) if(!rst_n) cnt1 <= 0; else if(cnt1==12'd2560) cnt1 <= 0; else cnt1 <= cnt1+1'b1; reg clk1_rdin_r;function Write_Max7219_byte;input [7:0] byte; //always @(negedge clk1) begin case(cnt1) 12'd0: begin clk1_r=0; din_r=byte[7]; clk1_r=1; end 12'd320: begin clk1_r=0; din_r=byte[6]; clk1_r=1; end 12'd640: begin clk1_r=0; din_r=byte[5]; clk1_r=1; end 12'd960: begin clk1_r=0; din_r=byte[4]; clk1_r=1; end 12'd1280: begin clk1_r=0; din_r=byte[3]; clk1_r=1; end 12'd1600: begin clk1_r=0; din_r=byte[2]; clk1_r=1; end 12'd1920: begin clk1_r=0; din_r=byte[1]; clk1_r=1; end 12'd2240: begin clk1_r=0; din_r=byte[0]; clk1_r=1; end endcase endendfunctionassign clk1=clk1_r;assign din=din_r;reg load_r;function Write_Max7219;input [7:0] addr;input [7:0] dat;reg ab; //always @(posedge clk or negedge rst_n) begin //load_r<=1'b0; a=Write_Max7219_byte(addr); b=Write_Max7219_byte(dat); //load_r=1'b1; endendfunctionassign load=load_r;reg a;always @(posedge clk) begin load_r<=1'b0; //a=Write_Max7219(SHUT_DOWN 8'd1); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0 a=Write_Max7219(8'hc 8'd1); a=Write_Max7219(8'hf 8'd0); //Normal Operation XXXXXXX0 Display Test Mode a=Write_Max7219(8'h9 8'hff); //Decode Mode Select D7~D0 1 B decode 0 No decode a=Write_Max7219(8'hb 8'd4); //SCAN LIMIT 0~7 0xX0~0xX7 a=Write_Max7219(8'ha 8'd4); //Set Intensity 0xX0~0xXf a=Write_Max7219(11); a=Write_Max7219(22); a=Write_Max7219(38); a=Write_Max7219(46); load_r<=1'b1; endendmodule我写了个FPGA驱动MAX7219的程序,下载进去以后,本来四个数码管应该显示1286的,可是要么全亮,要么不亮。请大神看看,哪里有问题呀?谢谢!更多操作
我仿照特权同学的FPGA VGA历程写了一个VGA程序。下到板子里,屏幕显示许多竖条,没有预期的小方块。大神看看,是不是我纵坐标哪里搞错了?谢谢!分辨率800*600,原来特权同学的分辨率是640*480module VGA( clkrst_n //系统控制 hsyncvsync vga_rvga_gvga_b //VGA控制 ); input clk; //50Minput rst_n; //低电平复位 //FPGA与VGA接口信号output hsync; //行同步信号output vsync; //场同步信号output[2:0] vga_r;output[2:0] vga_g;output[1:0] vga_b;//坐标计数reg[10:0] x_cnt; //行坐标reg[9:0] y_cnt; //列坐标always @(posedge clk or negedge rst_n) if(!rst_n) x_cnt <= 11'd0; else if(x_cnt == 11'd1039) x_cnt <= 11'd0; else x_cnt <= x_cnt+1'b1;always @(posedge clk or negedge rst_n) if(!rst_n) y_cnt <= 10'd0; else if(y_cnt == 10'd665) y_cnt <= 10'd0; else if(x_cnt == 11'd1039) y_cnt <= y_cnt+1'b1; //VGA场同步,行同步信号reg hsync_rvsync_r; //同步信号always @(posedge clk or negedge rst_n) if(!rst_n) hsync_r <= 1'b1; else if(x_cnt == 11'd0) hsync_r <= 1'b0; //产生hsync信号 else if(x_cnt == 11'd120) hsync_r <= 1'b1; always @(posedge clk or negedge rst_n) if(!rst_n) vsync_r <= 1'b1; else if(y_cnt == 10'd0) vsync_r <= 1'b0; //产生vsync信号 else if(y_cnt == 10'd6) vsync_r <= 1'b1; assign hsync =hsync_r;assign vsync = vsync_r; //有效显示标志位产生reg valid_yr; //行显示有效信号always @(posedge clk or negedge rst_n) if(!rst_n) valid_yr <= 1'b0; else if(y_cnt == 10'd32) valid_yr <= 1'b1; else if(y_cnt == 10'd632) valid_yr <= 1'b0;wire valid_y=valid_yr;reg valid_r;always @(posedge clk or negedge rst_n) if(!rst_n) valid_r <= 1'b0; else if((x_cnt == 11'd187) && valid_y) valid_r <= 1'b1; else if((x_cnt == 11'd987) && valid_y) valid_r <= 1'b0; wire valid=valid_r;wire[10:0] x_dis; //横坐标显示有效区域0-799wire[9:0] y_dis; //纵坐标显示有效区域0-599assign x_dis = x_cnt - 11'd187;assign y_dis = y_cnt - 10'd33;//VGA色彩信号产生/* RGB = 000 黑色 RGB = 100 红色 = 001 蓝色 = 101 紫色 = 010 绿色 = 110 黄色 = 011 青色 = 111 白色 *//*一共800*600个像素点,需要显示256种颜色;那么每个颜色显示区域为40*30,就正好。*/reg[7:0] vga_rgb; //VGA色彩显示寄存器always @(posedge clk) if(!valid) vga_rgb <= 8'd0; else begin case(x_dis) 11'd0: begin //当x坐标画到0时,让显示色彩数据根据当前的y坐标值重新 if(y_dis >= 10'd0 && y_dis < 10'd40) vga_rgb <= 8'd0; else if(y_dis >= 10'd40 && y_dis < 10'd80) vga_rgb <= 8'd16; else if(y_dis >= 10'd80 && y_dis < 10'd120) vga_rgb <= 8'd32; else if(y_dis >= 10'd120 && y_dis < 10'd160) vga_rgb <= 8'd48; else if(y_dis >= 10'd160 && y_dis < 10'd200) vga_rgb <= 8'd64; else if(y_dis >= 10'd200 && y_dis < 10'd240) vga_rgb <= 8'd80; else if(y_dis >= 10'd240 && y_dis < 10'd280) vga_rgb <= 8'd96; else if(y_dis >= 10'd280 && y_dis < 10'd320) vga_rgb <= 8'd112; else if(y_dis >= 10'd320 && y_dis < 10'd360) vga_rgb <= 8'd128; else if(y_dis >= 10'd360 && y_dis < 10'd400) vga_rgb <= 8'd144; else if(y_dis >= 10'd400 && y_dis < 10'd440) vga_rgb <= 8'd160; else if(y_dis >= 10'd440 && y_dis < 10'd480) vga_rgb <= 8'd176; else if(y_dis >= 10'd480 && y_dis < 10'd520) vga_rgb <= 8'd192; else if(y_dis >= 10'd520 && y_dis < 10'd560) vga_rgb <= 8'd208; else vga_rgb <= 8'd224; end 11'd5011'd10011'd15011'd20011'd25011'd30011'd35011'd40011'd45011'd50011'd55011'd600 11'd65011'd7011'd750: vga_rgb <= vga_rgb + 1'b1; default:; endcase endassign vga_r = vga_rgb[7:5];assign vga_g = vga_rgb[4:2];assign vga_b = vga_rgb[1:0];endmodule
我尝试了AD 18.1.2 到AD18.1.5 ,在导入规则时,全部卡死闪退。系统分别尝试了win10 RS2 1709 和win10 RS3 最新系统都一样。以下是事件日志:错误应用程序名称: X2.EXE,版本: 0.0.0.0,时间戳: 0x5ab03398错误模块名称: tbbmalloc.dll,版本: 2017.0.0.0,时间戳: 0x5915fb89异常代码: 0xc000041d错误偏移量: 0x000000000000db7b错误进程 ID: 0x1ec4错误应用程序启动时间: 0x01d3dd49ea814e96错误应用程序路径: D:\Program Files\Altium\AD181\X2.EXE错误模块路径: D:\Program Files\Altium\AD181\tbbmalloc.dll报告 ID: ef857391-91d7-448f-8600-ac8fae64c283错误程序包全名: 错误程序包相对应用程序 ID: 应用程序: X2.EXEFramework 版本: v4.0.30319说明: 由于未经处理的异常,进程终止。异常信息: 异常代码为 c0000005,异常地址为 000000018000DB7B堆栈:
我想仿真一个分频系数为12的分频器。程序如下:module div12(fm,clk);output fm;input clk;reg fm;reg[2:0] cnt=3'b000;always @(posedge clk) begin if(cnt==3'b101) begin fm <= ~fm;cnt<=0;end else begin cnt<=cnt+1;end endendmoduletestbench文件为:`timescale 1ns/1nsmodule div12_testbench;wire fm=0;reg clk=0;div12 div12(fm,clk);always #10 clk=~clk;endmodule仿真结果为:fm为什么是一条红线。没有波形。请高手执教,谢谢!
原理图见附件。请问高手,LED1,2,3,4分别连到FPGA的哪个管脚上。我是菜鸟,怎么也看不出来。谢谢!
我正在学FPGA,正在看夏宇闻老师的verilog书。书中第四章讲运算符。我照着写了个程序,如下:module t4_1(out,a); input a; output out; reg[3:0] start,result; initial begin; start=1; result=(start<<2); endendmodule本来书上不是这样,没有参数。可是通不过编译,我就加了输入a和输出out。这样倒是通过编译了,可是我想仿真看看start,result的值,可是不成功,运行仿真,我加的两个数都不变。我是想像C语言那样学verilog,写一段程序,仿真一下,看看结果。请问高手,向类似的程序怎么仿真啊?谢谢!
1.JPG我安装了quartus ii 13.1 ,文件编译没问题。可是仿真的时候发现不往下走。停在上图所示那个地方。请问高手,如何解决?谢谢!
谁能提供一份altium designer的视频教程,需要有讲解四层PCB设计、ddr、cpu布线的。谢谢
请教大神们,Altium Designer16版本在win10下总会出现对话弹框,内容是空的,弹框最上面写的是Error,然后就卡死了,也关不了,也保存不了,后面就直接闪退了,这个是怎么回事呀?