OSDN Git Service

ea2bf3a787b6c362657bed2bf9660a6d13e9aaca
[oca1/test.git] / VGADisplay / src / vga_ram.v
1 module vga_ram (
2         i_rst, i_clk50, i_clk25,
3         i_we, i_wrdata,
4         i_re, o_rddata, 
5         o_rdack
6 );
7
8         input i_rst ;
9         input i_clk50 ;
10         input i_clk25 ;
11         
12         input i_we ;
13         input [7:0] i_wrdata ;
14         input i_re ;
15         output [7:0] o_rddata ;
16         
17         output o_rdack ;
18         
19         reg [8:0] r_wradrs ;
20         reg [8:0] r_rdadrs ;
21         reg r_rdadrs_buff ;
22
23         (* remstyle = "no_rw_check" *) reg [7:0] mem1[511:0] ;
24
25         assign o_rddata = mem1[r_rdadrs] ;
26         assign o_rdack = (r_rdadrs_buff != r_rdadrs[9]) ;
27         
28         always @( posedge i_clk50 ) begin
29                 r_rdadrs_buff <= r_rdadrs[9] ;
30         end
31         
32         // memory read command
33         always @ ( posedge i_clk25 or posedge i_rst ) begin
34                 if(i_rst) begin
35                         r_rdadrs <= 0 ;
36                 end
37                 else if( i_re ) begin
38                         r_rdadrs <= r_rdadrs + 9'd1 ;
39                 end
40         end
41
42         // memory write command
43         always @ ( posedge i_clk50 or posedge i_rst ) begin
44                 if(i_rst) begin
45                         r_wradrs <= 0 ;
46                 end
47                 else if( i_we ) begin
48                         mem1[r_wradrs] <= i_wrdata ;
49                         r_wradrs <= r_wradrs + 9'd1 ;
50                 end
51         end
52 endmodule