FPGA/ASIC技术
本人属应届毕业生,进入公司发现公司用的的fpga几乎全是xilinx的,几乎都是是和无线通信有关。最近工作较忙,一直没抽出时间好好看看,抱歉,言归正传。 今天晚上抽出时间仔细分析了下板子,对照原理图,了解了板子每块芯片的作用,比如CDCE913就为一块可编程时钟合成器,CP2102为USB转串口芯片,DP83848J以太网收发器,TPS65708为TI的电源管理模块等等。总体来看这块板子功能还是很强大的,但是我觉得能够把板子的每个相应的芯片发挥或者使用的得心应手还是需要一定时间的。
为了更快的对它有初步的了解,由于打开板子的时候流水灯在运行,所以我决定首先写个简单的led流水灯实验,一般来说开发环境无外乎新建工程(注意项目文件名不要用中文,开头不要用数字),选择器件,建立源文件(verilog),写程序,检查语法错误,仿真,分配引脚,下载,运行。
verilog简单led程序如下
module STREAM_LED ( SYSCLK, RST_B, LED_DATA ); input SYSCLK;
input RST_B;
output [9:0] LED_DATA; //LED data output.
wire SYSCLK;wire RST_B;
reg [9:0] LED_DATA;
reg [20:0] TIME_CNT;
reg [9:0] LED_DATA_N;
wire [20:0] TIME_CNT_N;
always @(negedge RST_B or negedge SYSCLK)begin if(!RST_B) TIME_CNT <= 21'b0; else TIME_CNT <= TIME_CNT_N;end
assign TIME_CNT_N = TIME_CNT + 21'b1;
always @(negedge RST_B or negedge SYSCLK)begin if(!RST_B) LED_DATA <= 10'b11_1111_1110; else LED_DATA <= LED_DATA_N;end
always @ (*)begin if((LED_DATA == 10'b01_1111_1111) && (TIME_CNT == 24'h0)) LED_DATA_N = 10'b11_1111_1110; else if(TIME_CNT == 24'h0) LED_DATA_N = {LED_DATA[8:0] , 1'h1}; else LED_DATA_N = LED_DATA;end
endmodule
全部0条评论
快来发表一下你的评论吧 !